这个是什么意思???
int fun(void) const
{
\\..
}
问题点数:20、回复次数:9Top
1 楼haohe(舒克)回复于 2003-08-02 00:43:33 得分 1
不修改外边的数据Top
2 楼eric8231(1328cire)回复于 2003-08-02 00:59:04 得分 2
你的意思是问 函数声明后面加“const”?
这样的声明规则用于类的成员函数,目的是禁止对类的数据成员修改,实现方法大概是把this指针变成指向常量对象的this指针。Top
3 楼pengzhenwanli(紫气日盈)回复于 2003-08-02 01:45:37 得分 3
非成员函数不能使用这个修饰符
int fun(void) const
{
\\..
}
所以说你这样根本不对。
Top
4 楼wowowowo(1)回复于 2003-08-02 12:03:34 得分 2
如此用法只能用在成员函数中 表示此成员函数不会修改类的数据成员Top
5 楼calmman1980(calmman)回复于 2003-08-02 16:26:01 得分 0
谢谢,上面各位,这个是我在类成员函数中看到的.
可是各位的意思我还是不太明白
函数的参数类型声明称void有什么意思?
函数的后面加上了const是表示返回值是常量吗?
再次感谢!!谢谢Top
6 楼LoopyPuzzle(浪子无名)回复于 2003-08-02 16:51:06 得分 0
参数声明为void表明它不需要传递参数。而函数后面加const代表这是常函数成员,是常对象的唯一对外接口。因为如果定义了该类的常对象,那么常对象只能访问这种带有const的常函数成员(因为它可以保证不改变对象的数据成员),你明白么?Top
7 楼calmman1980(calmman)回复于 2003-08-02 18:56:22 得分 0
谢谢,楼上大哥!
基本明白了,不过还想请教一下,你说的这个常对象是啥意思???
什么时候需要定义这个常对象?
什么函数需要加上const的后缀修饰?Top
8 楼WindsonZhL(风之子)回复于 2003-08-02 19:27:41 得分 6
即 const X obj; 。obj只能访问类似func() const 这样的函数,obj.func(); 。
但func() 可以被任何类型的对象访问,而若func()返回的是 X 的数据成员,该成员不能被更
改。如:
class X
{
public:
int size;
…………
int func() const;
};
int X::func() const
{
return size;
}Top
9 楼LoopyPuzzle(浪子无名)回复于 2003-08-03 15:47:49 得分 6
常对象顾名思义就是不可以变化的对象,这里的不可以变化指的是数据成员不发生变化,因为在程序中有时是需要使用这种不会变化的对象的。比如说我在传递参数的时候有时可以改变某个对象的数据成员,但是你又不想让其发生改变,这时就可以使用常对象作参数进行传递。而要访问常对象的数据成员(一般数据成员都是私有类型),必须使用这些常函数成员作为唯一的对外接口。所以所有你认为常对象应该具有的方法(行为),均应该有所对应的常函数成员。Top




