Possible Duplicate:
The Definitive C++ Book Guide and List
我是C++新手,一直在玩几个例子,我只是想知道当初始化一个类时,它意味着什么。
通常在AS3中,我会这样做:
1
| MyClass myClass = new MyClass |
但是我在C++中看到了这个
1
| MyClass *myClass = new MyClass |
星星是用来干什么的,我见过它有时用,而不是其他的。
谢谢!
- 查找指针。尽可能不要动态分配内存,或者至少使用向量/智能指针。
- 这是基础知识,见权威的C++图书指南和列表。
- 为什么会有这么多否决票?他不可能在谷歌上搜索到它,你不可能在谷歌上搜索*,他需要知道它是一个指向谷歌的指针。
- SATUON我没有投票,但如果不知道C++中的EDCOX1 0是什么,他应该在提问之前先拿起一本教科书。
C++中的星号取决于它在程序中的位置。在这种特定情况下,它将myClass的含义修改为指向myClass实例的指针,而不是指向myClass实例的指针。
两者的区别在于,实例的生存期在超出作用域时结束,而通过指针分配和引用的实例即使在指针超出作用域后仍然有效。
这样的声明是有效的:
1
| MyClass myClass; // no"new" |
在这种情况下,不需要使用new,但实例的生命周期与变量myClass的范围有关。
- 那么,我是否需要先初始化我的类,然后在以后引用它时使用*myclass?
- @ C++中的USE1013512有几种选项,只要处理类就行。您可以使用new动态分配实例;在这种情况下,星号是必需的,然后使用->运算符而不是点.来访问类的成员。处理完对象后,还必须调用delete myClass。您也可以跳过new,使用点.,但一旦对象的变量超出范围,它就会被删除。
它叫做指针。如果您使用的是C++ 11兼容编译器,您可以执行以下操作:
auto myClass = std::make_shared();
如果您使用的是一个"原始"指针,那么当您使用完内存后,您需要手动删除它,使用shared_ptr,这是不必要的。
星号代表pointer。指针是内存地址。当您编写MyClass *myClass时,您将创建一个指针,指向创建新myclass的位范围的开始。
用new创建一个对象,您将负责它的生命周期。当您不再需要它们时,您将需要删除它,而创建MyClass myClass;将在退出创建它的作用域时被破坏。即使这样写,您仍然可以使用&操作符访问myclass内存地址。
如果你需要更多的解释,试着找一本那些书。