我经常使用const对象的指针,就像这样......
const int *p;
Run Code Online (Sandbox Code Playgroud)
这只是意味着您无法更改p指向的整数p.但是我也看到了const指针的引用,这样宣称......
int* const p;
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着指针变量本身是不变的 - 你可以改变它整天指向的整数,但你不能指出其他东西.
有什么可能的用途?
简而言之,我的问题是将成员变量作为非托管C++中的指针.
在java或c#中,我们有"高级指针".实际上,我们无法意识到它们中的"指针".我们通常初始化类的成员,如下所示:
member = new Member();
Run Code Online (Sandbox Code Playgroud)
要么
member = null;
Run Code Online (Sandbox Code Playgroud)
但在c ++中,它变得更加混乱.我见过很多样式:使用new,或者将成员变量保留在堆栈中.
在我看来,使用boost::shared_ptr似乎很友好,但在boost本身的源代码中new到处都有.这是效率的问题,不是吗?
是否有像"尽力避免new"或其他什么的行会?
编辑
我意识到说"把它们留在堆栈中"是不恰当的,这里有一个更恰当的说法:当我需要一个object成为我的成员变量时,我应该更喜欢一个而object不是一个object*?