gpt4 book ai didi

c++ - 调用带指针和不带指针的构造函数(实例)之间的区别

转载 作者:太空狗 更新时间:2023-10-29 20:38:29 25 4
gpt4 key购买 nike

我是 C++ 的新手,想知道调用带指针和不带指针的构造函数有什么区别。没有指针是指类的实例。

例如:

#include <iostream> 
using namespace std;

class abc {
abc() {
cout << "constructor";
}

~abc() {
cout << "destructor";
}
};

int main() {
abc a;
return 0;
}

// VS
int main() {
abc* a = new abc();
delete a;
return 0;
}

唯一的区别是它是动态调用的,否则两者是相同的,例如产生相同的结果?

最佳答案

abc a; 在堆栈上分配 a,调用其默认构造函数。当 a 超出范围时将调用析构函数。

abc* a = new abc();heap 上的 abc 对象分配内存,调用其默认构造函数并返回一个指向对象的指针。请记住调用 delete a;(这将调用析构函数)否则您将泄漏内存。

abc a(); 是名为 a 的函数的函数原型(prototype),该函数返回 abc,不带任何参数。

关于c++ - 调用带指针和不带指针的构造函数(实例)之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31379998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com