我来了(最近):C++对象实例化和范围
Phone myPhone = new Phone();
简单地写
Phone myPhone;
实质上创造了一个支架一个班级,但尚未初始化。
现在我正在写一个C++的小班,我有一个问题。下面是伪代码:
Phone myPhone;
void Initialise()
{
myPhone = new Phone();
}
void DoStuff()
{
myPhone.RingaDingDong();
{
事实上,这是因为上面的代码有点误导是什么,我想有,因为我希望能够把我所有的初始化代码为许多东西到一个整洁的地方。我的问题是在C++中初始化内部的行是不必要的,因为在这之前,一个新的实例已经被第一行创建并初始化了。另一方面,如果我将Initialize()中的第一行放在DoStuff中,则无法再访问它。它超出了范围,(更不用说在C++中使用'new'或不使用它们之间的区别)。你怎样才能创建一个类变量的持有者,以便我可以在一个地方初始化它,并在另一个地方访问它?或者我从根本上弄错了什么?
在此先感谢!访问RinaDingDong()
当
Phone *myPhone;
void Initialise()
{
myPhone = new Phone();
}
void DoStuff()
{
myPhone->RingaDingDong();
}
仅有的两个变化是在myPhone
声明添加*
和->
,而不是.
:
我试过写一个答案,但问题涉及太多的东西。相反,标准的SO C++响应#1:[阅读一本好的介绍书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 –
同意CPP。了解一种语言的特定机制是一回事,但从理解语言的习语来看,这是一个很长的过程。不幸的是,你的例子太短暂了,无法提供有意义的建议,所以我会留下一个有条件的“不要使用新的”或“指针”。 –