这可能是一个简单的问题,但我一直坚持下去。我试图通过它的构造函数将一个对象从 ObjectA 传递到 ObjectB (它是 ObjectA 的成员)。但是,我不想传递值,而是只想传递 const 引用并无限期地存储该引用。问题是我不知道该怎么做。
我可以让它工作有指针像这样:
class ClassB
{
private:
int *ptrInternalX;
public:
ClassB( int *tempX );
}
ClassB::ClassB( int *tempX )
{
ptrInternalX = tempX
}
这样,一个对象被创建并传递一个指向 int 的指针,并且该指针存储在类中以供以后使用。
然而,指针让我担心使用较大对象时的内存泄漏和其他问题,所以我想尝试使用“常量引用”来做这样的事情(常数&)。然而,这似乎不起作用......
class ClassB
{
private:
int &internalX;
public:
ClassB( const int &tempX );
}
ClassB::ClassB( const int &tempX )
{
internalX = tempX
}
我知道引用本质上是现有变量的“别名”(引用相同内存地址的不同名称),并且需要使用现有变量立即初始化它们。所以这会在我的程序中产生错误!
这可能吗?或者有更好/更清晰的方法来做这样的事情吗?我想使用常量引用的原因是仅传递引用而不是大对象的速度,同时保持数据免受意外更改和内存泄漏的影响......我确信有一种简单而直接的方法可以这样做,但我对 const 引用传递不太熟悉。
class ClassB
{
private:
const int& internalX;
public:
ClassB(const int& tempX);
}
ClassB::ClassB(const int& tempX):
internalX(tempX)
{
}
正如你所说,一个reference
必须立即初始化。因此,如果您想要您的reference
成为班级成员,你have使用你的构造函数的初始化列表 http://www.cprogramming.com/tutorial/initialization-lists-c++.html来设置它。
(This 简短的解释 http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/也可能让你的事情变得更清楚,因为它专门针对你刚刚遇到的情况)
祝你好运
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)