亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言中new的用法?

C語言中new的用法?

C++
慕森卡 2019-01-27 14:10:45
C語言中new的用法
查看完整描述

2 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

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);


示例代碼如下:

123456789101112// Emp.h#ifndef _EMP_H_#define _EMP_H_  class Emp{public:Emp();Emp(const Emp& other);~Emp();};#endif // _EMP_H_


1234567891011121314151617181920212223242526272829303132333435// 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;}



查看完整回答
反對 回復 2019-03-10
  • 2 回答
  • 0 關注
  • 4493 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號