*在C ++初始化中

可能重复:
最终的C ++图书指南和列表

我是C ++的新手,一直在玩几个例子,我只是想知道*初始化一个类时的含义。

通常在AS3中,我会这样做:

MyClass myClass = new MyClass

但我在c ++中看到了这一点

 MyClass *myClass = new MyClass

我的明星是什么,我看到它有时使用而不是其他。

谢谢!


C ++中的星号意味着许多事情取决于它在程序中的位置。 在此特定实例中,它将myClass的含义修改为指向MyClass实例的指针,而不是MyClass的实例。

两者的区别在于,实例的生命周期在超出作用域时结束,而通过指针分配和引用的实例即使在指针超出作用域后仍保持有效。

有这样的声明是有效的:

MyClass myClass; // no "new"

在这种情况下,没有必要使用new ,但实例的生存时间与变量myClass的范围相关联。


它被称为指针。 如果您使用的是C ++ 11兼容编译器,则可以执行以下操作:

auto myClass = std::make_shared<MyClass>();

如果您使用的是“原始”指针,则需要在使用shared_ptr完成内存时手动删除它,这不是必需的。


星号代表pointer 。 指针是一个内存地址。 当您编写MyClass *myClass ,您将创建一个指向创建新MyClass的位范围的开始位置的指针。

new创建一个对象,你就会对它的生命周期负责。 当你不再需要它们时,你将需要删除它,而创建MyClass myClass; 将在退出创建它的范围时被破坏。 即使以这种方式编写,使用&运算符,您仍然可以访问myClass内存地址。

如果您需要更多的解释,请尝试购买其中一本书。

链接地址: http://www.djcxy.com/p/6857.html

上一篇: The * in C++ Initialisations

下一篇: How to start Game Developing?