程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中如何顯式調用構造函數

C++中如何顯式調用構造函數

編輯: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;


參考:

operator new

allocator::construct

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved