首頁>Club>
4
回覆列表
  • 1 # 花好月圓夜下

    new是C++中用於動態記憶體分配的運算子,在C語言中一般使用malloc函式。

    new有三種用法:new operator、operator new、placement new

    1、new operator:

    new operator是最常見的用法,如 Emp* e1 = new Emp;(Emp是一個類) 這裡new有兩種作用:分配空間、初始化物件(呼叫了建構函式)

    2、operator new:

    operator new作用是隻分配空間,不呼叫建構函式,如:Emp* e2 = (Emp*)operator new(sizeof(Emp));

    3、placement new:

    placement new作用是在已分配好的空間上初始化物件,不分配空間,呼叫複製建構函式,如:new ((void *)e2) Emp(*tb1);

    示例程式碼如下:

    // Emp.h#ifndef _EMP_H_#define _EMP_H_ class Emp{public:Emp();Emp(const Emp& other);~Emp();};#endif // _EMP_H_// Emp.cpp#include “Emp.h”#include <iostream>using namespace std;Emp::Emp(){cout<<“Emp…”<<endl;}Emp::Emp(const Emp& other){cout<<“Copy Emp…”<<endl;}Emp::~Emp(){cout<<“~Emp…”<<endl;}// main.cpp#include “Emp.h”#include <iostream>void main(){using namespace std;// new operator 分配空間,呼叫建構函式Emp* e1 = new Emp;// operator new 只分配空間Emp* e2 = (Emp*)operator new(sizeof(Emp));// placement new 不分配空間,呼叫複製建構函式new ((void *)e2) Emp(*e1);// 顯示呼叫解構函式e2->~Emp();// 僅釋放空間,不呼叫解構函式operator delete(e2);// 呼叫解構函式,釋放空間delete e1;}

  • 中秋節和大豐收的關聯?
  • 有哪些遊戲曾讓你廢寢忘食?又有哪些遊戲勾起了你沉睡已久的記憶?