我是C ++的新手并且只是用几个例子来玩,我只是想知道在初始化一个类时*意味着什么。
通常在AS3中我会这样做:
MyClass myClass = new MyClass
但我在c ++中看到过这个
MyClass *myClass = new MyClass
明星是什么,我曾经看过它有时使用而不是其他人。
谢谢!
答案 0 :(得分:4)
C ++中的星号意味着很多东西取决于它在程序中的位置。在此特定实例中,它将myClass
的含义修改为指针到MyClass
的实例,而不是MyClass
的实例。
两者之间的区别在于,实例的生命周期在超出范围时结束,而通过指针分配和引用的实例即使在指针超出范围之后仍然有效。
这样的声明是有效的:
MyClass myClass; // no "new"
在这种情况下,没有必要使用new
,但实例的生命周期与变量myClass
的范围有关。
答案 1 :(得分:1)
星号表示pointer
。指针是一个记忆地址。当您编写MyClass *myClass
时,您将创建一个指向创建新MyClass的位范围开头的指针。
使用new
创建对象,您将对其生命周期负责。当您不再需要它时,您将需要删除它,而当您退出创建它的范围时,创建MyClass myClass;
将被销毁。即使以这种方式编写,您仍然可以使用&
运算符访问myClass内存地址。
如果您需要更多解释,请尝试获取those books之一。
答案 2 :(得分:1)
它被称为指针。如果您使用的是兼容C ++ 11的编译器,则可以执行以下操作:
auto myClass = std::make_shared<MyClass>();
如果您使用的是“原始”指针,则需要在使用shared_ptr
完成内存后手动删除它,这不是必需的。