用const声明函数有什么用???
发布网友
发布时间:2022-05-14 04:16
我来回答
共5个回答
热心网友
时间:2024-02-23 21:45
别人问起,不能简单说const表示常数,这样会让别人觉得很外行。或许可以说是只读,其实也不完全正确。务必要弄清楚一下几个定义的含义:
const int a; //a是一个常整型数
int const a; //a是一个整型常数
const int *a; //a是一个指向常整型数的指针,从这里可以看出整型数不可以修改,但指针可以。
int * const a; //a是一个指向整型数的常指针,整型数可以修改,指针不能修改。
int const * a const; //a是一个指向常整型数的常指针。
如果能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。
热心网友
时间:2024-02-23 21:45
一楼的有点答非所问,我来跟你简单的说说吧,const修饰符能修饰类的成员函数而不能修饰普通的自定义函数,类的成员函数加上了const修饰符后它用两个作用,1:在该函数内不允许对类的私有数据成员进行修改,2:当声明了一个const的该类对象时,该对象只能调用该类的const成员函数而不能调用非const成员函数.如果声明一个非const的该类对象,该对象既可以调用const成员函数也可以调用非const成员函数.
热心网友
时间:2024-02-23 21:46
楼上不知道哪里复制来一堆牛头不是很对马嘴的答案。。。。。。
const声明函数就是表明这个函数不会对类的成员变量进行修改,所以如果有常引用或者常指针指向这个类的对象,就可以调用const 声明的函数,没有const的不能被调用。
理解到这里一般就够了,如果你还想知道更多,去搜搜mutable关键字在c++中的作用。
参考资料:很简单的问题,头脑中随时有货
热心网友
时间:2024-02-23 21:46
2L的回答基本正确,但不到位。
因为回答过这个问题,就不复制粘贴了,较详细的说明和举例如下:
http://zhidao.baidu.com/question/172084740.html。
几个要点:
1.const修饰的函数只能是非静态成员函数。
2.语义:const修饰的函数具有常量语义。const成员函数不能修改对象的成员(特别地,要注意delete不算这里的“修改”),除非这个成员的定义中被mutable修饰。
3.const修饰的对象以及const指针或引用指向的对象都无法调用非const修饰的成员函数。
// xrhigh 回答中的“私有数据成员”的“私有”是多余的。不要把访问权限控制掺和到这个问题中来。
====
[原创回答团]
参考资料:原创
热心网友
时间:2024-02-23 21:47
支持二楼的回答!!