小编Phi*_*lip的帖子

ZIP存档评论

目前我正在开发一个极简主义的ZIP 2.0库.

按照"阅读f*ckin"手册的座右铭,我阅读了PKWARE的appnote,所以我知道只包含"中央目录记录结束"的ZIP存档被认为是空的.此记录最后定义了一个可变大小的"归档注释",这就是为什么在加载中心目录时必须向后扫描以搜索签名"PK\5\6"的原因.这让我有两个问题:

1)当用户尝试添加包含此序列的存档注释时,我该怎么办?

2)空档案是否允许发表评论?(当存档为空时,WinRAR无法显示它,而7-Zip是)

更新:

我曾与WinRAR的首席开发人员Roshal先生进行过电子邮件联系.他确认2)是WinRAR中的一个现在修复的错误.

zip zipfile

5
推荐指数
1
解决办法
1207
查看次数

C++ - 通过引用引用调用的基本实现?

考虑以下代码(最小版本):

#include <iostream>

struct Base
{
    virtual ~Base() {}

    virtual void test() const { std::cout << "base"; }
};

struct Derived : public Base
{
    void test() const { std::cout << "derived"; }
};

struct Composite
{
    const Derived &ref;

    Composite(const Derived &ref) : ref(ref) {}

    void testRef() const { ref.test(); }
};

int main()
{
    Composite c((Derived()));
    c.testRef();
}
Run Code Online (Sandbox Code Playgroud)

当使用最新的MinGW g ++时,这实际上产生了"基础"!这是编译器错误还是我错过了什么?有人可以在VS中测试这个吗?

我认为自己是一位经验丰富的C++程序员,经常使用多态,基于堆栈的引用,临时对象(C++标准12.2)等.因此我知道应该应用终身延长.

只有在Base(虚拟或非虚拟)中定义析构函数并使用临时(即后续用法生成'derived')时,才会出现此行为:

int main()
{
    Derived d;
    Composite c(d);
    c.testRef();
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism mingw temporary-objects

2
推荐指数
1
解决办法
135
查看次数

标签 统计

c++ ×1

mingw ×1

polymorphism ×1

temporary-objects ×1

zip ×1

zipfile ×1