C++ 关于类对象
我有一个关于类对象的非常基本的问题。创建类之后,我们需要创建一个类对象。在这一点上,我对使用C++ 关于类对象,c++,C++,我有一个关于类对象的非常基本的问题。创建类之后,我们需要创建一个类对象。在这一点上,我对使用*对象或对象感到有点困惑。例如: CClass对象 CClass*对象 他们俩有什么不同?要访问类函数,我需要使用点'.和箭头'->'。我知道dot和arrow用于访问类函数,但dot和arrow的重要意义是什么?在函数中使用时,第一个方法在堆栈上创建一个对象,并且使用符号调用方法 CClass obj; obj.method(); 重要提示:无论处理如何离开封闭函数,对象都将被销毁 在函数中使用
*对象
或对象
感到有点困惑。例如:
CClass对象
CClass*对象
他们俩有什么不同?要访问类函数,我需要使用点
'.
和箭头'->'
。我知道dot和arrow用于访问类函数,但dot和arrow的重要意义是什么?在函数中使用时,第一个方法在堆栈上创建一个对象,并且使用
符号调用方法
CClass obj;
obj.method();
重要提示:无论处理如何离开封闭函数,对象都将被销毁
在函数中使用时,第二个方法在堆上创建一个对象。由于您处理的是指针,因此必须使用->
符号调用方法
CClass *obj = new CClass(); // obj is a pointer to a new object on the heap
obj->method();
重要提示:当您离开函数时,此对象不会被销毁,这意味着您必须在其他地方管理其生存期。如果需要销毁对象,可以使用:
delete obj;
第二行是指向对象的指针示例。箭头->是取消指针引用和访问成员的简写
CClass * object;
//CClass has a public method Go and a public member variable Mine
object->Go(); //shorthand for (*CClass).Go()
CClass对象
定义类型为CClass
的名为object
的对象
CClass*ptr_对象
定义指向类型为CClass
我知道dot和arrow用于访问类函数,但dot和arrow的重要意义是什么
ptr\u object->func()
在语义上等同于(*ptr\u object)。func()
前面带星号的版本声明了一个指向对象的指针-您需要使用“new”关键字为此分配空间,并确保在完成对象时使用“delete”释放内存
另一个(无星号)声明将对象声明为局部变量,该变量在堆栈上自动分配空间,并且在超出范围时自动清理
<>这是一个重要的区别,你可能想通过一个好的C++教程来解释语言是如何工作的。有一个在 “第二个方法”不必在堆上创建对象<代码>类别obj;C类*ptr和obj代码>。“第一个方法”不一定在堆栈上创建对象<代码>类其他类{CClass member;};OtherClass*o=新的OtherClass代码>@James&@molbdnilo-感谢您在我的回答中指出了几个缺点,我已经澄清了措辞。感谢您的回复。我真的很感激。可能的副本