gpt4 book ai didi

c++ - 通过构造函数传递和存储 const 引用?

转载 作者:可可西里 更新时间:2023-11-01 15:53:42 25 4
gpt4 key购买 nike

这可能是一个简单的问题,但我坚持了下来。我试图通过它的构造函数将一个对象从 ObjectA 传递给 ObjectB(它是 ObjectA 的成员)。但是,我不想按值传递,而是只想传递一个 const 引用并无限期地存储该引用。问题是我不确定该怎么做。

我可以像这样使用指针让它工作:

class ClassB
{
private:
int *ptrInternalX;
public:
ClassB( int *tempX );
}

ClassB::ClassB( int *tempX )
{
ptrInternalX = tempX
}

这样,一个对象被创建并传递一个指向 int 的指针,该指针被存储在类中供以后使用。

但是,指针让我担心在使用较大的对象时会出现内存泄漏和其他问题,因此我想尝试使用“常量引用” (const &) 来做这样的事情。然而,这似乎不起作用......

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 成为类(class)成员,您必须使用您的constructor's initialization list。进行设置。

(这个 short explanation 也可能会让你更清楚,因为它专门针对你刚刚遇到的情况)

祝你好运

关于c++ - 通过构造函数传递和存储 const 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com