tel*_*dor 0 c++ variables pointers declaration header-files
将头文件中的变量声明为指针或非指针之间有什么区别?我不确定我是否正确理解这些差异.
例如
class MyClass {
private:
MyOtherClass* moc; // pointer
MyOtherClass moc2; // no pointer
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,在将变量声明为指针时,我已经提出了以下优点/缺点.
好处:
缺点:
还有什么可说的?
拥有一个对象表示所有权.它的构成.指针可以表示所有权,但大多数时候它们意味着聚合.
即MyClass有moc2和使用moc.
让你的决定考虑类的设计以及它们如何相互作用,而不是基于指针与对象的争论.每个MyClass对象都有自己的moc2成员,但多个MyClass对象可以moc在它们之间共享.
关于您提出的优点/缺点:
好处:
MyClass在堆上分配了一个对象,那么也是如此moc2.缺点:
MyClass拥有成员 - 它可能是指向其他地方创建的某个对象的指针,所以MyClass不负责管理它.