MrK*_*ish 10 c++ pointers reference constants
这可能是一个简单的问题,但我坚持下去.我试图通过它的构造函数将一个对象从ObjectA传递给ObjectB(它是ObjectA的一个成员).但是,我想传递一个const引用并无限期地存储该引用,而不是传递值.问题是我不知道该怎么做.
我可以用这样的指针来处理这个问题:
class ClassB
{
private:
int *ptrInternalX;
public:
ClassB( int *tempX );
}
ClassB::ClassB( int *tempX )
{
ptrInternalX = tempX
}
Run Code Online (Sandbox Code Playgroud)
这样,创建一个对象并将指针传递给int,该指针存储在类中以供以后使用.
但是,当使用更大的对象时,指针让我担心内存泄漏和其他问题,所以我想尝试使用'常量引用'(const&)来做这样的事情.但是,这似乎不起作用......
class ClassB
{
private:
int &internalX;
public:
ClassB( const int &tempX );
}
ClassB::ClassB( const int &tempX )
{
internalX = tempX
}
Run Code Online (Sandbox Code Playgroud)
我知道引用本质上是现有变量的"别名"(引用相同内存地址的不同名称),并且需要使用现有变量立即初始化它们.所以这会在我的程序中产生错误!
这甚至可能吗?或者是否有更好/更清晰的方式做这样的事情?我想使用常量引用的原因是只传递引用而不是大对象的速度,同时保持数据免受意外更改和内存泄漏......我确信有一种简单直接的方法这样做但我对const引用传递不是很熟悉.
cmc*_*cmc 14
class ClassB
{
private:
const int& internalX;
public:
ClassB(const int& tempX);
}
ClassB::ClassB(const int& tempX):
internalX(tempX)
{
}
Run Code Online (Sandbox Code Playgroud)
正如你所说,reference必须立即初始化.因此,如果您希望自己reference成为类成员,则必须使用构造函数的初始化列表来设置它.
(这个简短的解释也可能会让你更清楚,因为它专门针对你刚刚遇到的情况)
祝好运