gpt4 book ai didi

c++ - 总是创建类的实例?

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:27 25 4
gpt4 key购买 nike

我有一个只有一个函数“Print()”和两个属性“age, sex”的类。我想了解对象何时在内存中创建?

我总是可以访问对象的属性和函数,即使我没有调用它的构造函数。

从类中创建对象没有任何规则吗?

在 C# 中,这不会在内存中创建对象:ClassName cls;但这将创建:ClassName cls = new ClassName();在 C++ 中,有什么方法可以在我需要调用它的构造函数之前不在内存中创建对象?

#include <QtCore/QCoreApplication>
#include "iostream"

using namespace std;

class ClassName{
public:
void print(){
cout<< "Age: " <<age <<endl;
cout<< "Sex: " <<sex <<endl;
}
int age;
char sex;


};


int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

ClassName *ex1 = new ClassName();
ex1->print();

ClassName ex2;
ex2.print();

ClassName ex3= {10,'e'};
ex3.print();

ClassName exCopy(ex3);
exCopy.print();

return a.exec();
}

最佳答案

我不确定您到底在问什么,但希望以下说明包含您正在寻找的答案。

变量 ex1ex2ex3exCopy 都与 ClassName 的不同实例相关联

  1. ex1 指向堆分配的实例。由于您从不对其调用 delete,该实例会在程序退出时泄漏,在这种情况下这无关紧要,但如果 ClassName 有一个非- 必须在退出前调用的普通析构函数。
  2. ex2 是一个默认初始化的堆栈实例,出于所有目的,它将在 agesex 中具有随机值。
  3. ex3 是成员初始化的堆栈实例。
  4. exCopy 是复制构造的堆栈实例。

关于c++ - 总是创建类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3222675/

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