C++ 使用类指针与实例

C++ 使用类指针与实例,c++,class,pointers,C++,Class,Pointers,我不明白的是,使用指向类的指针和生成类的新实例之间有什么区别。只是为了表演?在这里,我创建了一个类,使m成为指向该类的指针,n成为该类的实例。 还有一个问题:我可以在类中设置一个指针并使用另一个构造函数吗?如myClass*p(7);p->afis() #include <iostream> using namespace std; class myClass { int a; public: myClass(void); myClass(int);

我不明白的是,使用指向类的指针和生成类的新实例之间有什么区别。只是为了表演?在这里,我创建了一个类,使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();
}
#包括
使用名称空间std;
类myClass
{
INTA;
公众:
myClass(无效);
myClass(int);
void afis();
~myClass(无效);
};
myClass::myClass(无效)
{
a=5;
}
myClass::myClass(整数编号)
{
a=nr;
}
void myClass::afis()
{
库特
只是指向类型
myClass
的指针,它不指向任何有效对象,取消引用这样的指针是未定义的行为

一个未定义的行为意味着你的程序无效,它可能看起来正常工作,或者可能崩溃,或者它可能表现出任何奇怪的行为,所有的安全赌注都是无效的。因此,仅仅因为你的程序正常工作并不意味着它是安全的,并且它会一直工作

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

myClass obj;
myClass*m = &obj;
在第二种情况下:

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

我可以在类中设置一个指针并使用另一个构造函数吗

生成指针不会调用构造函数。在将指针设置为某个对象(可能是使用
new
创建的全新对象)的地址之前,指针不会初始化


看看这里,了解一下指针:你的意思是
myClass*m=newmyclass;
,对吗?那么为什么在我说这个myClass*m;m->afis()之后呢;它在屏幕上指向5?@Demontor:这是未定义的行为。任何事情都可能发生。它可能打印
5
。它可能崩溃。它可能会覆盖你的所有文件。它可能会通过电子邮件将淫秽图片发送给你的祖母。根本不需要在这里使用freestore。这里只需要一个简单的本地对象。我知道一个事实,你非常了解知道吗,我想知道为什么会有这个例子?afis是什么意思?@BenVoigt,哈哈,不错!我笑得很厉害:)
 myClass n(7);
myClass* m;                                     //<--
m->afis();
std::unique_ptr<myClass> m(new myClass(constructor, args, here));                                     
m->afis();