传递对变量的引用
Passing a reference to a variable
我得到一个错误stack around variable dlgFile is corrupted
,我试图修复。这是遗留代码,看起来很可疑。我在另一个项目中替换了一部分,在这里:
void CPlantDlg::OnBnClickedButtonTestReference()
{
CString str = _T("Hello string");
{ // intentional so destructor of Tester is called below
Tester tester( str );
}
AfxMessageBox (str );
}
Tester类是:
class Tester
{
public:
Tester(CString & str);
~Tester(void);
CString _str;
};
Tester::Tester(CString & str) : _str( str )
{
}
Tester::~Tester(void)
{
//_str = "Changed"; // say I do this, what will be printed in caller function?
}
传递CString安全吗?我认为Tester
类应该破坏它的_str
,这应该导致原始str在类外被破坏?
当我运行时,它提示"Hello String"。
如果我启用_str = "Changed"
,您希望提示什么?它实际上仍然显示原始字符串。它是通过引用传递的,为什么呢?
Tester类中的_str变量是CString对象的一个实例。当成员初始化式说
时_str( str )
没有存储传递给构造函数的CString引用的引用,正在调用复制构造函数,并且用与str相同的值初始化_str。它只是一个副本。所以改变它不会对原来的CString产生影响。
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 多个"常量引用"变量可以共享同一个内存吗?
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- C++方法中的引用变量
- 作为赋值(增加引用变量)C++的左操作数所需的左值
- 使用更改此变量的函数在同一行中打印引用变量
- 将延迟变量分配给引用变量
- 如何通过引用获取引用变量的地址?
- 将引用变量传递给函数
- C++中引用变量的内存?
- 按名称存储和引用变量列表
- 返回一个C++引用变量 VS 返回一个变量
- c++ 在 if 语句中分配引用变量
- 引用变量何时合适,为什么?你能解释一下实际的语法和位置吗?
- C++ - 将一个变量分配给另一个变量和将变量分配给引用变量有什么区别?
- 在类范围内声明时,应在 C++14 中引用变量模板
- 当引用变量的引用"死亡"时,它会发生什么?
- 将非按引用变量分配给返回按引用的函数,反之亦然
- 引用变量如何存储在mem中
- 引用变量存储在哪里