首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 成员函数返回值中的const和&的作用 [已结贴,结贴人:xqfone]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xqfone
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-02-22 00:59:10 楼主
    template <typename Object>
    const Object & operator *()const;
    学生我翻阅了手头几本资料,感觉讲的都挺模糊的,对第一个const的和&的作用还是不甚明了,
    不知道什么时候该用他们,请大侠们讲解一下,分享一下心得.
    学生在这先谢过拉!


    ps:论坛里的积分是怎么挣的呀( 除了回帖帖主给分外 )!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HelloDan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 01:11:081楼 得分:0
    const用的原则是能用的时候都用吧。因为这样对于函数的使用自由度来说更大。

    & 这你写出的表示是引用的意思。其他的还有可能是取地址。这样返回的引用可以作为左值。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HelloDan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 01:17:032楼 得分:5
    关于这些东西哪里找,你可以找MSDN,或者搜索引擎。关键词为: const  reference
    或者可以找书,如: Effective C++

    这些东西不是一二句可以说明白的。还是你自己看下吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • visame
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 02:40:353楼 得分:5
    C/C++ code
    template <typename Object> const Object & operator *()const; /*坦白地说,要讲清楚可不容易。const用法太多了。 这里的第一个const是修饰Object的,表示Object不能被更改,是const(常量)。 第二个const是类的成员函数专用的。表示不能更改成员变量的值。(涉及this指针) &可以表示取地址和引用,这里表示引用。引用可以理解成别名。 const Object &就是一个指向不能改变的Object的引用。用引用作函数返回值这样做的好处很多,除了可以做左值,而且可以避免生成临时变量。不要被这些术语吓倒哦!以后就会明白的。 推荐Lippman的C++ Primer/Essential C++或者Thinking in C++。 */
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Chiyer
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      3

      3

    发表于:2008-02-22 09:21:244楼 得分:5
    C/C++ code
    不加前面的const就会有可能被修改,如 #include "iostream" using namespace std; struct t { int a; t() : a(100){} int& get() { return a; } }; int main() { t a; int& b = a.get(); b = 200; return 0; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xqfone
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 12:49:395楼 得分:0
    貌似有点明白了,加了第一个const后返回值无法再被修改?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HelloDan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 12:54:266楼 得分:3
    第一个const后返回值无法再被修改

    ---》这个你修改的机会好像是没有的,是要用一个const类型的来接收它啊。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xqfone
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 13:06:397楼 得分:0
    又糊涂了,要好好去翻翻书了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bluejoe2000
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 13:08:548楼 得分:2
    不是修改的问题,而是非const函数都不能调用了

    --------我是分隔线--------我是分隔线--------我是分隔线--------

    学标准的、全面的C++
    写笨笨的、健壮的代码
    做风趣的、谦逊的程序员

                      --------《标准C++开发入门与编程实践》
                              http://books.vcer.net/stdcpp
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved