当前位置:  开发笔记 > 编程语言 > 正文

重载C++ new运算符时的大小信息

如何解决《重载C++new运算符时的大小信息》经验,为你挑选了1个好方法。

C++内存分配运算符的形式为operator new (size_t s).当我new为类型的类对象重载运算符时T,它是否保证size_t s运算符的输入参数(即)new确切sizeof(T)?如果是,为什么这个函数仍然需要大小作为输入参数?



1> R Sahu..:

可以在基类中重写operator new,并使用它来分配派生类类型的对象.

struct Base
{
    void* operator new (size_t s) { ... }
    int a;
};

struct Derived : public Base
{
   int b;
};

Derived* d = new Derived; 

分配内存时Derived,Base::operator new(size_t)将使用.参数的值将是sizeof(Derived).如果没有该参数,我们就无法为类型的对象分配适当的内存量Derived.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有