使用类指针vs实例

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)

Alo*_*ave 8

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.
这是创建对象的有效方法.