虚拟析构函数声明后的覆盖标识符是否有任何特殊含义?
class Base
{
public:
virtual ~Base()
{}
virtual int Method() const
{}
};
class Derived : public Base
{
public:
virtual ~Derived() override
{}
virtual int Method() override // error: marked override, but does not override - missing const
{}
};
Run Code Online (Sandbox Code Playgroud)
在虚方法上使用覆盖标识符作为检查非常有用:当Base虚方法实际上未被覆盖时,编译器将报告错误.
虚拟析构函数上的覆盖是否也有任何含义/功能?
我目前正在制作我们的应用程序大地址识别.经验表明,这样做有一些意想不到的陷阱.我创建这篇文章来制作一个需要采取的完整步骤列表.
AMD大地址识别指南中列出的开发注意事项提供了一个很好的起点,但绝不是完整的:
以下注意事项将有助于确保代码可以处理大于2GB的地址:
- 避免使用带符号的指针算法(即比较和添加)
- 指针使用所有32位.不要将Bit31用于其他方面.
- 一些dll将在2GB边界下加载.在这种情况下,VirtualAlloc()不能分配连续的内存.
- 尽可能使用GlobalMemoryStatusEx()(首选)或GlobalMemoryStatus()来检索内存大小.
因此,问题是:在制作C++ Win32本机应用程序大地址感知时需要完成哪些事情的完整列表?