C++ 初始化中的 *

pan*_*hro 4 c++

可能的重复:
权威 C++ 书籍指南和列表

我是 C++ 的新手并且一直在玩一些例子,我只是想知道初始化一个类时 * 是什么意思。

通常在 AS3 中我会这样做:

MyClass myClass = new MyClass
Run Code Online (Sandbox Code Playgroud)

但我在 C++ 中看到过这个

 MyClass *myClass = new MyClass
Run Code Online (Sandbox Code Playgroud)

星星有什么用,我见过它有时被使用,而其他时候没有。

谢谢!

das*_*ght 5

C++ 中的星号有很多含义,这取决于它在程序中的位置。在这种特定的情况下,它修改的意思myClass是一个指针到的实例MyClass,而不是一个实例MyClass

两者之间的区别在于,实例的生命周期在超出范围时结束,而您通过指针分配和引用的实例即使在指针超出范围后仍然有效。

有这样的声明是有效的:

MyClass myClass; // no "new"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有必要使用new,但实例的生命周期与变量的作用域相关联myClass