可能的重复:
权威 C++ 书籍指南和列表
我是 C++ 的新手并且一直在玩一些例子,我只是想知道初始化一个类时 * 是什么意思。
通常在 AS3 中我会这样做:
MyClass myClass = new MyClass
Run Code Online (Sandbox Code Playgroud)
但我在 C++ 中看到过这个
MyClass *myClass = new MyClass
Run Code Online (Sandbox Code Playgroud)
星星有什么用,我见过它有时被使用,而其他时候没有。
谢谢!
C++ 中的星号有很多含义,这取决于它在程序中的位置。在这种特定的情况下,它修改的意思myClass是一个指针到的实例MyClass,而不是一个实例MyClass。
两者之间的区别在于,实例的生命周期在超出范围时结束,而您通过指针分配和引用的实例即使在指针超出范围后仍然有效。
有这样的声明是有效的:
MyClass myClass; // no "new"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,没有必要使用new,但实例的生命周期与变量的作用域相关联myClass。