设为首页 加入收藏

TOP

C++中如何显式调用构造函数
2014-07-19 23:05:09 来源: 作者: 【 】 浏览:110
Tags:如何 调用 构造 函数

  C++中如何显式调用构造函数

  #include

  class A {

  public:

  A();

  A(int);

  …

  };

  A * pA = (A *) malloc( sizeof(A) );

  new (pA) A; // 调用A()

  A * pAA = (A *) malloc( sizeof(A) * 10 );

  for (int i = 0; i < 10; ++i)

  new (pAA + i) A(i); // 调用A(int)

  以上用法也称为放置构造,它是与第三方内存管理的标准接口,必须 include 后才能使用,因为它通过重载(全局的) operator new 来实现。

  另外我们也可以通过重载 operator new 来实现定制的放置构造,例如:

  // 实现一个 pool

  class my_pool {

  …

  };

  …

  class A {

  …

  public:

  // 重载 operator new 来实现从 pool 中分配对象,不重载全局 operator new 可以保证只有该类可以使用定制的放置构造方法

  static void * operator new (size_t size, my_pool & pool) {

  …

  }

  …

  };

  …

  // 定制的放置构造用法

  my_pool myPool;

  A * pA = new (myPool) A;

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++之友元函数与拷贝构造函数 下一篇C++11新特性之右值引用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)
·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)