研发埠
标题:
[学C/C++] c++关于const的问题
[打印本页]
作者:
孙宏雷
时间:
2013-7-30 13:09
标题:
[学C/C++] c++关于const的问题
#include<iostream>using namespace std;class con{public: void function()const //(1) { cout<<&quot;this is insidefunction const&quot;<<endl;} void function() //(2) { cout<<&quot;this is insidefunction &quot;<<endl;}};void main(){ con
const
t; t.function(); //(*)}执行上面的程序,(*)调用的是(1)如果去掉加粗字体const,(*)调用的是(2)我的问题:明显,函数function(1)和(2)是重载,我的原本理解是compiler是按照函数名和argument list来识别函数的,按照我的理解(1)(2)不能实现重载。那么我的理解错了,请问正确的应该是怎样的?或者能不能解释下红色字体const对运行结果影响,谢谢大虾们。
作者:
季良
时间:
2013-7-30 13:16
在这个例子里,const的意思是只有const的object才能call这个function,并且这个function不能修改object的状态,即不能修改object的任何properties。有点不对吧,一般情况下,就算object不是const类型的,也能调用类中的const 的function。function为const的意思是在function的body中不改变任何值。那么非const的object应该也能调用此类function。这里的问题应该在于当函数有重载时, const object对函数的选择。#includeusing namespace std;class con{public: void function()const //(1) { cout}compiler应该是通过“函数签名”来识别函数,这个函数签名包括函数名,参数类型,参数个数和后缀const等表明函数特性的组合。比如你在用visual的时候可能会发现不能link的时候编译器会暴露保存的函数签名,是一个可以表示以上特性的字符串。这里加const不加const调用的是因该具有不同函数签名的函数指针
欢迎光临 研发埠 (http://bbs.yanfabu.com/)
Powered by Discuz! X3.2