使用malloc初始化一个类和new初始化一个类的区别
生活随笔
收集整理的這篇文章主要介紹了
使用malloc初始化一个类和new初始化一个类的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
new出來對象會調用對象的構造函數,但是malloc出來的對象是沒有調用構造函數的,因此下面使用malloc初始化的對象私有變量是沒有經過構造函數初始化的但是通過new出來的對象,對象已經經過構造函數的初始化。
// // Created by andrew on 2021/3/8. // #include <iostream> #include <string>using namespace std;class MallocClass { private:string _valor; public:MallocClass() {_valor = "Malloc_test";}const string &get() const {return _valor;}void set(const string &valor) { this->_valor = valor;} };int main(int argc, char ** argv) {auto * mallocClass = (MallocClass*)malloc(sizeof(MallocClass)); // 輸出為空,說明malloc申請的對象是沒有調用構造函數cout << mallocClass->get() << endl;mallocClass->set("set");free(mallocClass);cout << "class malloc end ==============" << endl;auto *mallocClass1 = new MallocClass;cout << mallocClass1->get() << endl;return 0; }可以看出new出來的對象私有變量是經過初始化的,malloc
輸出結果:
/work/achou-leetcode/cmake-build-debug/testclass malloc end ============== Malloc_testProcess finished with exit code 0總結
以上是生活随笔為你收集整理的使用malloc初始化一个类和new初始化一个类的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:李文静,山东农业信息中心助理农经师
- 下一篇: 【面向对象】包可见性和友元可见性