[c++] 常成员函数
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++] 常成员函数相关推荐
- const常对象成员与常成员函数
#include <iostream> #include <string> using namespace std; class pt{ public: pt(int a,in ...
- 常对象成员和常成员函数
-----------------siwuxie095 常对象成员 和 常成员函数 看如下实例: 定义一个坐标类:Coordinate 要想正确的初始化,必须通过初始化列表来初始化,因为两个数据成员 ...
- C++远征之封装篇——常对象成员、常成员函数
一.常对象成员 二.常成员函数 (1)常成员函数中不能修改数据成员的值 (2)不能修改的原因 每个函数都默认带了一个this指针的,该指针指向该类的实例. 当使用const来修饰时,其实是const ...
- 常成员函数函数和返回值为常量的函数
常成员函数,它的形式是在成员函数后面加上const修饰,它是为了防止特定函数改变本类对象的数据成员而产生的,目的就是保护数据成员.在常成员函数中,你不能改变数据成员的值,你也不能在常成员函数中调用非常 ...
- C++中的常成员函数以及const用于函数重载
1.什么是常成员函数? 在类中可以含有普通成员函数和静态成员函数,而使用 const修饰的普通成员函数称为 常成员函数 const修饰的是普通成员函数中的this指针指向的内存空间 类的普通成员函数中 ...
- 【C++基础知识】常成员函数,常引用
文章目录 const修饰类的成员函数--常成员函数 常引用 常成员函数和普通成员函数的访问特性比较 const修饰类的成员函数–常成员函数 将const修饰的类成员函数称之为const成员函数,con ...
- C++常成员函数与普通成员函数访问比较
常数据成员: const 类型说明符 数据成员 如:const int year 常成员函数:类型说明符 函数名(参数表) const 如:void showDate() const 1.常成员函数可 ...
- C++ 常数据成员、常成员函数和常对象
首先给出一个例子简单理解const修饰数据变量的基本工作原理: #include <stdio.h>int main() {const int a = 250;int *ptr = (in ...
- C++常成员函数 常对象成员
什么是常对象成员,什么是常成员函数? 首先先看一段代码: class A { private:const int a; // 常对象成员,只能在初始化列表赋值public:// 构造函数A() { } ...
最新文章
- centos7samba服务的搭建
- JavaScript实现jumpSearch跳转搜索算法(附完整源码)
- .NET Core 的Generic Host 之Generic Host Builder
- [react] 类组件和函数式组件有什么区别?
- java s1=abc s2=abc s1==s2_经典问题:String s1 = abc 与 String s2 = new String(abc)的区别...
- 使用 Vue.js 和 Chart.js 制作绚丽多彩的图表
- 线性降维:PCA、LDA、MDS
- 并发编程之进程池,线程池 和 异步回调,协程
- 基本数据结构 - 栈和队列
- react antd confirm content list_react简单的项目架构搭建过程
- 硅谷还是程序员的“圣地”吗?
- Haproxy的部署安装
- 一文学会LCD12864显示中文、英文、反显
- 6000件数字藏品上线秒空!“国宝级”数字藏品长这样
- python3中26个英文字母排序_26个英文字母的排序是怎样排的?
- 计算机海报大赛策划书,海报策划书模板.docx
- 星星之火-50:无意中发现一种能够把网络视频下载到本地计算机中的方法
- [ ERROR ] Suite ‘Test1‘ contains no tests matching tag ‘run‘ and matching name ‘Test1.test2‘ in suit
- CentOS修改hosts文件及生效命令
- bmi计算 python_python tkinter bmi计算