gpt4 book ai didi

c++ - 使用类指针与实例

转载 作者:太空狗 更新时间:2023-10-29 19:49:28 26 4
gpt4 key购买 nike

我不明白的是使用指向类的指针和生成它的新实例之间有什么区别。只是为了表现?这里我创建了一个类,m 是类的指针,n 是类的实例。还有一个问题:我可以为类创建一个指针并使用另一个构造函数吗?像 myClass* p(7); p->afis(); ?

#include <iostream>
using namespace std;

class myClass
{
int a;
public:
myClass(void);
myClass(int);
void afis();
~myClass(void);
};

myClass::myClass(void)
{
a = 5;
}

myClass::myClass(int nr)
{
a = nr;
}

void myClass::afis()
{
cout << a;
}

myClass::~myClass()
{
}

int main()
{
myClass* m; //<--
m->afis();

myClass n(7); //<--
n.afis();

cin.get();
}

最佳答案

myClass* m;   

只是指向类型 myClass 的指针,它不指向任何有效对象,取消引用此类指针是未定义行为

未定义的行为意味着您的程序无效,但它可能看起来可以工作,或者它可能崩溃,或者它可能显示任何奇怪的行为,所有安全的赌注都关闭了。因此,仅仅因为您的程序有效并不意味着它是安全的并且它将始终有效。

要编写一个有效的程序,您必须使指针指向一个有效的对象。
例如:

myClass obj;
myClass*m = &obj;

第二种情况:

 myClass n(7);

它通过调用 myClass 的构造函数创建一个类型为 myClass 的对象 n,该构造函数接受一个类型为 int 的参数
这是创建对象的有效方法。

关于c++ - 使用类指针与实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931547/

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