常数据成员和常成员函数
常数据成员
引言:类存在的目的之一就是为了实现封装性,但是实际上经常使用公有函数接口去修改其数据成员,为了保证类中可以有一些数据成员绝对不会被修改,所以创造了常数据成员
特点:
1.在定义时要在头部加const关键字
2.初始化操作只能在构造函数的初始化列表中进行
3.无论是普通成员函数还是常成员函数都无法修改其值
常成员函数
引言:为了实现这样一种函数:对于其调用的数据成员只能读取,而不能修改。所以创造了常成员函数
特点:
1.在声明和定义时都要在尾部加const关键字
2.其只能读取数据成员,而不能修改
是否可以修改 | 一般成员函数 | 常成员函数 |
---|---|---|
一般数据成员 | 是 | 否 |
常数据成员 | 否 | 否 |
3。常对象只能调用常成员函数
#include<iostream>
using namespace std;
class Point
{int x,y;
public:
Point(int a,int b):x(a),y(b){}
fun(){return x+y}
fun()const{return x-y}
}void main
{const Point p1(1,1);
Point p2(1,1);
cout<<p1.fun<<endl;
cout<<p2.fun<<endl;}
注:上面的例子一方面说明了常对象只能调用常成员函数
另一方面说明了const可以用于区分重载函数
4.常成员函数只能调用常成员函数,防止误改数据成员
常数据成员和常成员函数相关推荐
- 常对象、常数据成员、常成员函数
C++有不少措施保护数据的安全性,如private保护类的数据成员等. 但对于一些共用的数据,如函数实参与形参等,我们可以在不同的场合通过不同的途径访问同一个数据对象.有时不经意的误操作会改变数据的值 ...
- 【C++】 常对象、常数据成员、常成员函数总结
常数据成员 ◆ 常数据成员必须进行初始化,并且不能被更新. ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化:普通数据成员在初始化列表和函数体中 ...
- 常对象成员和常成员函数
-----------------siwuxie095 常对象成员 和 常成员函数 看如下实例: 定义一个坐标类:Coordinate 要想正确的初始化,必须通过初始化列表来初始化,因为两个数据成员 ...
- C++ 常数据成员、常成员函数和常对象
首先给出一个例子简单理解const修饰数据变量的基本工作原理: #include <stdio.h>int main() {const int a = 250;int *ptr = (in ...
- 常数据成员、常成员函数
定义常数据成员: 类型 const 对象名:或者 const 类型 对象名: 例如:const clock c1(9,9,9)或者: clock const c2(10,10,10): 常对象的几条特 ...
- 常数据成员、常成员函数、常对象
常数据成员 常数据成员的初始化只能在类构造函数的初始化表中 MINO::MINO(const char *name, int age, string birth, int height, int we ...
- 常对象、常数据成员、常成员函数总结
# include <iostream> using namespace std;class Time {public:Time(int h = 10, int m = 30, int s ...
- C++常数据成员,常成员函数及常对象的使用
一.常数据成员不可修改,声明方式:const [类型][标识符] 二.常成员函数可以和同名的非常成员函数发生重载,且声明和定义时都要带上const,调用时不需要,声明方式:[类型][函数名](参数列表 ...
- const常对象成员与常成员函数
#include <iostream> #include <string> using namespace std; class pt{ public: pt(int a,in ...
最新文章
- 堆栈中的EIP EBP ESP
- boost::gil::scale_lanczos用法的测试程序
- ie9 background 不显示
- 联想高性能服务器,Lenovo|EMC推出高性能4x4TB服务器级NAS
- oracle resize什么意思,Oracle调整表空间大小resize
- 十分钟上线 - 函数计算构建支付宝小程序的后端
- 我好像明白了如何画序列图了
- python产生随机数列表_python如何产生10个不同的随机数
- 多元线性模型分类变量方差_第三十一讲 R多元线性回归中的多重共线性和方差膨胀因子...
- Gink掉过的坑(一):将CCTableView导入到lua中
- 苹果mac误删文件怎样快速找回?
- mongodb mysql 事务_让你的mongodb支持事务---升级到mongodb 4.0
- Oracle grant connect, resource to user语句中的权限
- eclipse git 上传工程 提交项目到 github
- linux rtl8111/8168网卡驱动下载,Debian Linux 编译 Realtek (RTL8111/RTL8168) 网卡驱动
- 天猫商城应用自定义类代码
- Unity快速搭建城市场景
- smartPrinter安装报错
- token什么意思中文在C语言中,token什么意思(token里面包含什么信息)
- python智力问答测试_智力问答:经典的智力测试题