您的位置:程序门 -> c/c++ -> 新手乐园



函数名和{}中间的const是用来修饰什么的?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


函数名和{}中间的const是用来修饰什么的?
发表于:2007-04-13 10:06:33 楼主
最近在学c++,在书上看到有类似这样的语句:
const   resulttype   func_name(const   type   &arg)   const   {   ....   }

一个语句中3个const.
第一个const用来修饰返回值
第二个const用来修饰参数值
那么第三个const用来修饰什么呢?

ps.   感觉c++比java复杂多了!
发表于:2007-04-13 10:09:211楼 得分:0
修饰类成员函数
发表于:2007-04-13 10:09:392楼 得分:0
第一个是修饰返回值是个不能被变化的

第二个是说,参数是不能被变化的

第三个是说   如果这个函数在类里面     那么这个类里面的值不能被变化

sf

发表于:2007-04-13 10:10:543楼 得分:0
在函数内,不应改变参数的内容
发表于:2007-04-13 10:11:014楼 得分:0
几点规则:

        a.const对象只能访问const成员函数,而非const对象可以访问任意
            的成员函数,包括const成员函数.
        b.const对象的成员是不可修改的,然而const对象通过指针维护的对象却
            是可以修改的.
        c.const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在
            编译时,以是否修改成员数据为依据,进行检查.
        e.然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段
            都可修改,自然此时的const成员函数是可以修改它的…
发表于:2007-04-13 10:33:055楼 得分:0
const   resulttype   func_name(const   type   &arg)   const   {   ....   }
==========================================================
const   resulttype:
函数返回一个const量
const   type   &arg
函数内部对实参认为是const量,不修改其值
const   {   ....   }
用于类的成员函数,说明成员函数不修改类的数据成员,okokok
发表于:2007-04-13 10:42:026楼 得分:0
lz,楼上的高手讲的很详细了哦~~~~~~~~
发表于:2007-04-13 11:02:077楼 得分:0
const   resulttype   func_name(const   type   &arg)   const  
这个是一个返回值为const   resulttype   类型的const成员函数

三个const的作用不一样

第一个是修饰返回值的,返回的是一个const   resulttype   ,也就是说,返回值不可以修改
例如
resulttype   a,b;                                     //定义两个对象
a.func_name()=b;                                     //a.func_name()的返回值是resulttype类型的常对象,也
                                              //就是一个const   resulttype   所以对它进行赋值,a.func_name()=b,
                                                            //是非法的

第二个const是用来修饰形参的,const   type   &arg表示arg是实参的一个常引用,那么在func_name这个函数里对arg进行任何修改都将是错误的


第三个const是用来表示该成员函数不能修改数据成员的,例如这个类里有一个成员叫int   data;
那么
const   func_name   func_name()   const
{
      data++;                                 //这是非法的,const成员函数不可以对数据成员做修改
}
发表于:2007-04-13 11:14:338楼 得分:0
const   resulttype   func_name(const   type   &arg)   const   {   ....   }
==========================================================
const   resulttype:
函数返回一个const量
const   type   &arg
函数内部对实参认为是const量,不修改其值
const   {   ....   }
用于类的成员函数,说明成员函数不修改类的数据成员,okokok
   
发表于:2007-04-13 11:16:239楼 得分:0
多谢各位!!
发表于:2007-04-13 11:16:4010楼 得分:0
mark
发表于:2007-04-14 00:28:5511楼 得分:0
1.func_name(const   type   &arg):在函数作用域中,不可以修改arg
2.const   resulttype   func_name(……):返回值不可以被修改
3.func_name(……)   const   :方法不可以修改调用它的对象
发表于:2007-04-16 17:15:2412楼 得分:0
那个const就象是java中的final函数.
不比java复杂呀.  
你不会没用过java的final关键字吧.
发表于:2007-04-17 13:32:0513楼 得分:0
const在拿,哪的值不让改就是了
发表于:2007-04-17 14:42:4214楼 得分:0
第一个const   说明函数的返回值为常resulttype类型
第二个const   说明函数的参数为常type的引用
第三个const   说明   func_name函数是一个类的const成员函数
只有const成员函数可以被const对象调用
编译器不容许const对象调用非const成员函数
发表于:2007-04-17 14:43:5315楼 得分:0
3.func_name(……)   const   :方法不可以修改调用它的对象的成员


快速检索

最新资讯
热门点击