Dem*_*tor 4 c++ pointers class
我不明白的是使用指向类的指针和生成它的新实例之间的区别.这只是为了表现?在这里,我创建了一个类,并使m成为类的指针和类的实例.还有一个问题:我可以在类中创建指针并使用另一个构造函数吗?喜欢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();
}
Run Code Online (Sandbox Code Playgroud)
myClass* m;
Run Code Online (Sandbox Code Playgroud)
只是指向myClass它不指向任何有效对象的类型的指针,取消引用这样的指针是Undefined Behavior.
未定义的行为意味着您的程序无效,它似乎可以工作或可能崩溃,或者它可能显示任何奇怪的行为,所有安全的赌注都是关闭的.所以,仅仅因为你的程序工作并不意味着它是安全的并且它将始终有效.
要编写有效的程序,您必须使指针指向有效的对象.
例如:
myClass obj;
myClass*m = &obj;
Run Code Online (Sandbox Code Playgroud)
在第二种情况:
myClass n(7);
Run Code Online (Sandbox Code Playgroud)
它创建的对象n的类型的myClass调用的构造myClass这需要的类型的一个参数int.
这是创建对象的有效方法.