日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

构造函数中调用构造函数new和delete使用小结

發(fā)布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构造函数中调用构造函数new和delete使用小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

malloc free 是C語言的函數
new delete 是C++的操作符

#include "iostream" using namespace std;//構造中調用構造是危險的行為 因為會生成匿名對象 匿名對象會消失 class MyTest { public:MyTest(int a, int b, int c){this->a = a;this->b = b;this->c = c;}MyTest(int a, int b){this->a = a;this->b = b;MyTest(a, b, 100); //直接調用構造函數 產生新的匿名對象 沒有對象去接 那么匿名對象將會被析構//匿名對象和 調用匿名對象的對象 t1 沒有半毛錢關系}~MyTest(){printf("MyTest~:%d, %d, %d\n", a, b, c);}protected: private:int a;int b;int c;public:int getC() const { return c; }void setC(int val) { c = val; } };int main() {MyTest t1(1, 2);printf("c:%d", t1.getC()); //請問c的值是? //因為匿名對象的生命周期 暫時的//調用構造函數 產生的是匿名對象 并且產生的匿名對象與調用的對象沒有半毛錢的關系 而且會被很快的釋放掉 system("pause");return 0; }

#include <iostream> using namespace std;// C /C++ malloc free // new delete 操作符 C++的語法// 基礎類型變量 分配數組變量 分配對象 //int main() {int * p = (int *)malloc(sizeof(int));*p = 10;free(p);int *p2 = new int; //C++分配基礎類型*p2 = 20;delete p2;// 使用new 并且對申請的內存進行初始化int *p3 = new int(30);cout << "* p3 = " <<*p3 << endl;delete p3;cout << "hello world!" << endl;system("pause");return 0; }

new和delete的新增的功能

#include <iostream> using namespace std;// C /C++ malloc free // new delete 操作符 C++的語法// 基礎類型變量 分配數組變量 分配對象 //int main06() {//分配數組 C語言中int *p = (int *) malloc(sizeof(int )*10);p[0] = 10;cout << p[0] << endl;free(p);int *pArray = new int[10];pArray[0] = 22;cout << "pArray[0] = " << pArray[0] << endl;delete [] pArray; //刪除數組的正確方法 要加上 []cout << "hello world!" << endl;system("pause");return 0; }class Tea { public:Tea(int _a){a = _a;cout << "這是一個構造函數" << endl;}~Tea(){cout <<"這是一個析構函數" << endl;} protected: private:int a; };void playboy() {Tea *pT1 = (Tea *)malloc(sizeof(Tea));if(pT1 != NULL){free(pT1);}Tea *pT2 = new Tea(10); ///調用構造函數delete pT2; //delete會調用析構函數 } //分配對象 ////////////////////////////////////////////////////////////////////////////new 可以執(zhí)行 構造函數 //delete 函數可以執(zhí)行函數的析構函數 ////////////////////////////////////////////////////////////////////////// int main() {playboy();cout << "hello world!" << endl;system("pause");return 0; }

malloc free 和 new delete 在使用基礎數據的時候是可以混搭
在使用類的對象的時候 malloc不會調用構造函數
free 不會調用析構函數

總結

以上是生活随笔為你收集整理的构造函数中调用构造函数new和delete使用小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。