LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1146|回复: 12

让我迷惑的几个概念(C++)

[复制链接]
发表于 2006-9-22 19:34:44 | 显示全部楼层 |阅读模式
int const foo()   和const int foo () 的区别是什么?
int foo() const 又是什么意思呢?
发表于 2006-9-22 19:58:00 | 显示全部楼层
const int foo () 表示返回的是一个常量,这个函数的返回值必须赋给一个由 const 指示的常量
int foo() const 表示这个函数不能修改调用该函数的对象
int const foo() 我不太清楚
回复 支持 反对

使用道具 举报

发表于 2006-9-22 19:58:34 | 显示全部楼层
Post by dinghwy
int const foo()   和const int foo () 的区别是什么?
int foo() const 又是什么意思呢?
int const foo()和const int foo()完全等价;
int foo() const形式一般作为类的成员函数出现,并且不能改变除声明为mutable以外的类成员变量。
回复 支持 反对

使用道具 举报

发表于 2006-9-22 20:10:02 | 显示全部楼层
Post by zlbruce
const int foo () 表示返回的是一个常量,这个函数的返回值必须赋给一个由 const 指示的常量
完了,说错了
....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-22 20:23:17 | 显示全部楼层
Post by manphiz
int const foo()和const int foo()完全等价;

你仅说了他们等价  那他们到底是什么意思?
他们等价的那他们是不是必须得把返回值赋给const int 类型的变量?
回复 支持 反对

使用道具 举报

发表于 2006-9-22 20:24:46 | 显示全部楼层
Post by zlbruce
完了,说错了
....

也未必,int const foo()也是可行的,比如:

  1. const int i = foo();
复制代码

当然这样显然不如const int& foo()来的灵活。。
回复 支持 反对

使用道具 举报

发表于 2006-9-22 20:27:28 | 显示全部楼层
Post by dinghwy
你仅说了他们等价  那他们到底是什么意思?
他们等价的那他们是不是必须得把返回值赋给const int 类型的变量?
因为你一开始是这么问的呀:
Post by dinghwy

        int const foo() 和const int foo () 的区别是什么?
而且const int定义的是常量,而不是变量。应该说这样的foo只能用于初始化常量。具体见我上一帖。
回复 支持 反对

使用道具 举报

发表于 2006-9-22 20:54:05 | 显示全部楼层
其实const 用来修饰函数的时候,还有一些细节要注意。
1、当函数按指针传递时:
  1. const char * foo()
  2. {
  3.     // ...
  4. }
  5. char *p=foo() ; // 非法
  6. const char*p=foo(); //合法
复制代码

2、const修饰按值(包括按引用)传递的函数时,const没有作用
  1. const int foo()
  2. {
  3.     // ...
  4. }
  5. int a=foo(); // ok!
  6. const int a=foo(); // ok!
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-9-22 21:04:20 | 显示全部楼层
Post by Lolita
其实const 用来修饰函数的时候,还有一些细节要注意。
2、const修饰按值(包括按引用)传递的函数时,const没有作用

  1. const int foo()
  2. {
  3.     // ...
  4. }

  5. int a=foo(); // ok!
  6. const int a=foo(); // ok!
复制代码

我说错了的就是这个 :p
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-24 23:09:44 | 显示全部楼层
有点明白了  谢谢大家的热心回答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表