c – `size`来自哪里?
发布时间:2020-12-16 03:05:50 所属栏目:百科 来源:网络整理
导读:我知道应该有一个删除运算符,我不会在某个地方关注它.我只是想知道,哇,它有效. “大
我知道应该有一个删除运算符,我不会在某个地方关注它.我只是想知道,哇,它有效. “大小”的论点来自何处?
#include<iostream> #include<string> class Base { public: Base() { } void *operator new( unsigned int size,std::string str ) { std::cout << "Logging an allocation of "; std::cout << size; std::cout << " bytes for new object '"; std::cout << str; std::cout << "'"; std::cout << std::endl; return malloc( size ); } private: int var1; double var2; }; int main(int argc,char** argv){ Base* b = new ("Base instance 1") Base; } 结果如下: 为新对象’Base instance 1’记录16字节的分配 解决方法
它由编译器在编译时提供.当编译器看到:
new ("Base instance 1") Base; 它会添加一个调用: Base::operator new(sizeof(Base),"Base instance 1"); 编辑:编译器当然也会添加对Base :: Base()的调用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |