*在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