常量成员函数问题

[复制链接]
 楼主| sinadz 发表于 2012-7-26 22:37 | 显示全部楼层 |阅读模式
请问,常量成员函数的返回值为什么不可以使引用类型呢
比如:
string& get_name() const {return name;}
编译器就会出错,显示无法从const string对象转换到 string对象。
可是name在声明时没有定义为const啊,难道const成员函数把数据成员也改为了const??
火箭球迷 发表于 2012-7-26 22:50 | 显示全部楼层
const ClassName * const this;
行为上意味着该函数不能改变this指向对象的数据
pkat 发表于 2012-7-26 22:59 | 显示全部楼层
const string& get_name() const {return name;},必须这样
const型的成员函数表示这个this是const型指针,所以你无法修改他所指向的内容,lz应该知道const char*你是不能去给他做memcpy的吧,所以你这个成员函数返回name,本质上返回了const string&类型的变量。
但是你如果非要返回一个name的引用,而你又同时希望这个成员函数是const型的,只有一个办法,你把name加
mutable修饰符,mutable修饰符表示即使是在const成员函数里面也能被修改值!
xsgy123 发表于 2012-7-26 23:16 | 显示全部楼层
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
gxgclg 发表于 2012-7-29 12:30 | 显示全部楼层
const string& get_name() const {return name;},必须这样
const型的成员函数表示这个this是const型指针,所以你无法修改他所指向的内容,lz应该知道const char*你是不能去给他做memcpy的吧,所以你这个成员函数返 ...
pkat 发表于 2012-7-26 22:59

分析的很有道理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部