教
教父
Unregistered / Unconfirmed
GUEST, unregistred user!
在《Essential C++》的P111页中有这样一个例子:
class val_class {
public:
val_class(const BigClass &v):_val(v)()
BigClass &
val() const {return _val;} //此句是否有问题?
private:
BigClass _val;
};
书中说这会产生问题(但语法层面正确),返回一个non-const reference 指向_val,实际上
等于将_val开放出去,允许程序在其它地方加以修改。
我现在想问:我怎么在其它地方修改这个_val值?
为此我定义了一个类:
class Ctest
{
private:
string _title;
public:
Ctest(const string&
title):_title(title){}
string&
title() {return _title;}
};
void main(void)
{
Ctest t("zyp");
string Title;
Title=t.title();
cout << "The old t.title is " << Title <<endl;
Title="lq";
cout << "Title is " << Title << endl;
cout << "The new t.title is " << t.title() << endl;
}
这段代码并不能修改_title的值。
请各位高手指点。
class val_class {
public:
val_class(const BigClass &v):_val(v)()
BigClass &
val() const {return _val;} //此句是否有问题?
private:
BigClass _val;
};
书中说这会产生问题(但语法层面正确),返回一个non-const reference 指向_val,实际上
等于将_val开放出去,允许程序在其它地方加以修改。
我现在想问:我怎么在其它地方修改这个_val值?
为此我定义了一个类:
class Ctest
{
private:
string _title;
public:
Ctest(const string&
title):_title(title){}
string&
title() {return _title;}
};
void main(void)
{
Ctest t("zyp");
string Title;
Title=t.title();
cout << "The old t.title is " << Title <<endl;
Title="lq";
cout << "Title is " << Title << endl;
cout << "The new t.title is " << t.title() << endl;
}
这段代码并不能修改_title的值。
请各位高手指点。