1.常成员函数声明:

const成员函数也就是常成员函数,它的声明形式:

返回类型 成员函数名(参数表) const ;
例如: int function(int x) const ;

易混淆的地方: const 的位置
》函数开头的 const 用来修饰函数的返回值,表示返回值是 const 的,也就是不能被修改,例如const char * getname()。
》函数头部的结尾加上 const 表示常成员函数,这种函数只能读取成员变量的值,而不能修改成员变量的值,例如char * getname() const。

2.常成员函数的主要特点:

1)不能更新类的成员变量
2)不能调用该类中没有用const修饰的成员函数,即只能调用常成员函数
3)可以被类中其它的成员函数调用
4)常对象只能调用常成员函数,而不能调用其他的成员函数。

-------------------------------------------------例子1-----------------------------------------

class CDate
{public://常成员函数int year() const{ return y; }int month() const{//m++;              //错误:1)常成员函数中不能更新类的数据成员return m;}//普通成员函数int day(){return d++ ;}int AddYear(int i){ return y+1; }private:int y;int m;int d;
};int main()
{CDate const date;         //常对象//int day = date.day();   // 4)错误常对象不能调用非常成员函数int year = date.year();   //正确
}

-------------------------------------------------例子2-----------------------------------------

class A{private:int w,h;public:int getValue() const{           //常成员函数return w*h + getValue2();   //2)错误。只能调用常成员函数。}int getValue2(){               //普通成员函数return w+h+getValue();      //3)正确。常成员函数可以被其它成员函数调用}A(int x,int y){w=x,h=y;}A(){}};

3.其它注意事项

1)const关键字可以用于对重载函数的区分

class Calculate{private:int x,y;
public:Calculate(){}Calculate(int a,int b){x=a,y=b;}int calc() const   //常成员函数{return x*y; }int calc(){      //函数名称相同的非常成员函数return x+y;}};void main()
{   Calculate const  a(2,3);  //常对象Calculate        b(2,3);  //普通对象cout<<a.calc();     //调用int calc() const;输出6cout<<b.calc();     //调用int calc() ;输出5
}

2)const是函数类型的一部分,在实现部分也要带const。

class Calculate{private:int x,y;
public:Calculate(){}Calculate(int a,int b){x=a,y=b;}int calc() const ;       //声明常成员函数};
//类外定义(实现)
int Calculate::calc() const   //常成员函数
{return x*y;
}

参考

《c++ Primer》
《c++ Primer》
https://blog.csdn.net/navymei10220214/article/details/82889125
https://blog.csdn.net/navymei10220214/article/details/82889125
hhttp://c.biancheng.net/view/2230.html
http://c.biancheng.net/view/2230.html
http://c.biancheng.net/view/2230.html
https://www.cnblogs.com/97-5-1/p/8665483.html
https://www.cnblogs.com/97-5-1/p/8665483.html
https://www.cnblogs.com/97-5-1/p/8665483.html
https://www.cnblogs.com/97-5-1/p/8665483.html

[c++] 常成员函数相关推荐

  1. const常对象成员与常成员函数

    #include <iostream> #include <string> using namespace std; class pt{ public: pt(int a,in ...

  2. 常对象成员和常成员函数

    -----------------siwuxie095 常对象成员 和 常成员函数 看如下实例: 定义一个坐标类:Coordinate 要想正确的初始化,必须通过初始化列表来初始化,因为两个数据成员 ...

  3. C++远征之封装篇——常对象成员、常成员函数

    一.常对象成员 二.常成员函数 (1)常成员函数中不能修改数据成员的值 (2)不能修改的原因 每个函数都默认带了一个this指针的,该指针指向该类的实例. 当使用const来修饰时,其实是const ...

  4. 常成员函数函数和返回值为常量的函数

    常成员函数,它的形式是在成员函数后面加上const修饰,它是为了防止特定函数改变本类对象的数据成员而产生的,目的就是保护数据成员.在常成员函数中,你不能改变数据成员的值,你也不能在常成员函数中调用非常 ...

  5. C++中的常成员函数以及const用于函数重载

    1.什么是常成员函数? 在类中可以含有普通成员函数和静态成员函数,而使用 const修饰的普通成员函数称为 常成员函数 const修饰的是普通成员函数中的this指针指向的内存空间 类的普通成员函数中 ...

  6. 【C++基础知识】常成员函数,常引用

    文章目录 const修饰类的成员函数--常成员函数 常引用 常成员函数和普通成员函数的访问特性比较 const修饰类的成员函数–常成员函数 将const修饰的类成员函数称之为const成员函数,con ...

  7. C++常成员函数与普通成员函数访问比较

    常数据成员: const 类型说明符 数据成员 如:const int year 常成员函数:类型说明符 函数名(参数表) const 如:void showDate() const 1.常成员函数可 ...

  8. C++ 常数据成员、常成员函数和常对象

    首先给出一个例子简单理解const修饰数据变量的基本工作原理: #include <stdio.h>int main() {const int a = 250;int *ptr = (in ...

  9. C++常成员函数 常对象成员

    什么是常对象成员,什么是常成员函数? 首先先看一段代码: class A { private:const int a; // 常对象成员,只能在初始化列表赋值public:// 构造函数A() { } ...

最新文章

  1. centos7samba服务的搭建
  2. JavaScript实现jumpSearch跳转搜索算法(附完整源码)
  3. .NET Core 的Generic Host 之Generic Host Builder
  4. [react] 类组件和函数式组件有什么区别?
  5. java s1=abc s2=abc s1==s2_经典问题:String s1 = abc 与 String s2 = new String(abc)的区别...
  6. 使用 Vue.js 和 Chart.js 制作绚丽多彩的图表
  7. 线性降维:PCA、LDA、MDS
  8. 并发编程之进程池,线程池 和 异步回调,协程
  9. 基本数据结构 - 栈和队列
  10. react antd confirm content list_react简单的项目架构搭建过程
  11. 硅谷还是程序员的“圣地”吗?
  12. Haproxy的部署安装
  13. 一文学会LCD12864显示中文、英文、反显
  14. 6000件数字藏品上线秒空!“国宝级”数字藏品长这样
  15. python3中26个英文字母排序_26个英文字母的排序是怎样排的?
  16. 计算机海报大赛策划书,海报策划书模板.docx
  17. 星星之火-50:无意中发现一种能够把网络视频下载到本地计算机中的方法
  18. [ ERROR ] Suite ‘Test1‘ contains no tests matching tag ‘run‘ and matching name ‘Test1.test2‘ in suit
  19. CentOS修改hosts文件及生效命令
  20. bmi计算 python_python tkinter bmi计算

热门文章

  1. python echarts城市热力图_python如何画热力图?
  2. 关于第四次财富狂潮的思考,区块链如猛虎出笼?
  3. laravel 先判断在加查询条件,whereBetween,whereIn
  4. 入门教程pythonpython完整教程视频
  5. PC微信低版本限制登录怎么办?
  6. 计算机学硕考公更好还是专硕,专硕 VS 学硕 你适合读哪种?
  7. 快速查找参考文献影响因子——ScholarScope
  8. 网络爬虫Matplotlib
  9. 蚊虫叮咬后的去痒妙方大全
  10. 精简配置的虚拟磁盘在快照删除过程中膨胀为更大的大小(56608)