C++函数前和函数后加const修饰符区别
来源:互联网 发布:软件著作权申报 编辑:程序博客网 时间:2024/06/06 09:08
c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义。今天来讲讲const加在函数前和函数后面的区别。比如:
其中类TestClass中的length函数和getPContent函数分别在函数名后和前加了const修饰符,如果试图编译上面的代码,将会得到下面的错误:
里面有三个错误,也就是代码C、D、E处的三个地方。为什么C和D处的代码会出错,原因如下:
length函数名的后面加了const修饰符,这样说明函数的成员对象是不允许修改的。我们都知道,在类的成员函数里面,默认是在成员函数的第一个位置是this指针,如果在成员函数(只能是成员函数,要是类的静态函数或者是非成员函数就不可以在函数名后面加上const)后面const,则说明this指针的值是不可以修改的,只能读取。而上面的length函数可能会修改里面的contentLength和lengthIsValid的值,这样编译器肯定是不允许的,所以这样是会出现错误的。
解决方法是:在类的A、B处的成员前面加上mutable修饰符:
从字面的意思知道,mutalbe是“可变的,易变的”,跟constant(既C++中的const)是反义词。在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。这样在C、D处将不会出错。
那么,为什么E处出现了错误。这是因为在函数名getPContent前加了const修饰符,意味着该函数返回的值只能是读取,而不能被修改。而E处的content却为char *是可以被修改的,这与const正好相反了,所以出现了错误。解决方法是:在char *前面加上const修饰符,即:
再去编译运行,这样就不会出现错误了。
- C++函数前和函数后加const修饰符区别
- C++函数前和函数后加const修饰符区别
- 关于在函数前加const 和成员函数后加const 的记录
- [C++]函数后面加const修饰
- 函数名前后加const修饰符的区别
- 在函数前加Afx和::以及函数后加const的意义?
- 函数后面加const修饰
- 类成员函数 后加const和不加const 的区别
- c++ 在函数后加const是什么意思?
- c++ 在函数后加const是什么意思?
- 函数后加const
- 函数后加const
- C++中,函数名前的const和函数名后的const的区别
- const在函数前与函数后的区别
- const在函数前与函数后的区别
- const在函数前与函数后的区别
- const在函数前与函数后的区别
- const在函数前与函数后的区别
- Flume日志收集分层架构应用实践
- maven项目编译的时候,拒绝访问
- 看懂uml类图
- 浏览器与服务器的消息通信
- linux centos6.5 rpm安装mysql5.7
- C++函数前和函数后加const修饰符区别
- 如何离线查看Windows API和网上查询Windows API
- PAM(一)
- mybatis在xml文件中处理大于号小于号的方法
- 你是想读书,还是想读完书?
- Android日志消息的生成详细步骤
- iOS应用获取当前设备的bundle_id
- JPA-style positional param was not an integral ordinal
- caffe中卷积计算方法