一个类重载了运算符new和delete.new是公开的,delete是私人的.
构造此类的实例时,我收到以下错误:
pFoo = new Foo(bar)
Run Code Online (Sandbox Code Playgroud)
example.cpp(1):错误C2248:'Foo:operator delete':无法访问类'Foo'中声明的私有成员
但是这里没有调用delete,所以在编译器的扭曲思想中发生了什么?:)
CreateInstance函数的情况下解决问题?标准说
甲变量由对象的声明引入.变量的名称表示对象.
但这个定义究竟意味着什么呢?
变量是否为对象赋予名称,即变量只是其他匿名对象的命名机制?或者是名称本身的变量?
或者,变量是一个命名对象,因为每个变量也是一个对象?
或者是一个变量只是一个"代理",其名称将所有操作"委托"给真实对象?
为了进一步混淆,许多C++书籍似乎将变量和对象视为同义词.
你对此有什么看法?
关于实体,引用C++ 0x草案:
实体是价值,对象,参考,功能[...]
表示实体的每个名称都由声明引入.
变量由对象的声明引入
从这些陈述中我得出结论,变量是名称,因此不能是对象.这真让我感到困惑:)
是说delete pointer和pointer = nullptr一样吗?可能不是,但后者会释放内存吗?怎么样delete pointer; pointer = nullptr/ pointer = nullptr; delete pointer?为什么不使用它来提供一种安全的方法来过早地删除指针,如果需要,通常会在其他时间删除它们并导致正常删除错误?