【发布时间】:2013-06-28 11:46:47
【问题描述】:
我需要对以下代码执行什么操作才能输出A 和B 的值?喜欢的话可以编辑编译here。
typedef const std::vector<int>& t;
class SomeClass
{
t data;
public:
SomeClass(t _data) : data(_data) {}
void disp()
{
for (auto v : data)
std::cout << v << ", ";
std::cout << std::endl;
}
};
int A = 1;
int B = 2;
SomeClass f = SomeClass( {A, B} );
f.disp();
A = 456;
f.disp();
【问题讨论】:
-
你确定
{A, B}不是一个临时对象(向量)并且在SomeClass的构造函数退出后它没有被销毁吗? -
在构造函数中绑定临时变量不会延长生命周期。如果您对此不太满意,请不要使用参考成员。
-
你有
typedef const std::vector<int>& t你的班级成员不能是t datatype把它改成std::vector<int> data
标签: c++ reference pass-by-reference