定义常数据成员:
类型 const 对象名;或者 const 类型 对象名;
例如:const clock c1(9,9,9)或者:
clock const c2(10,10,10);

常对象的几条特殊规则:
1、常对象,不能被赋值。
2、常对象,不能访问非常成员函数。
3、常对象,不能被更新。
4、常数据成员,只能通过初始化列表来获得初值。

什么时候用常对象?
1、函数返回值,2、函数形参(常引用)

常成员函数
1、常成员函数,不能修改(更新)对象数据成员的值。
2、常成员函数,不能调用该类中没有用const修饰的成员函数。
3、常对象,只能调用它的常成员函数,而不能调用其他成员函数。
3、const关键字可以用于参与重载函数的区分。

如何定义常成员函数?
返回类型 成员函数名(参数表) const;

综合例题:

class date{private:int y,m,d;public:int year() const;int day() const;{return d;}int  month() const;int day(){return d++;}int addyear(int i){return y+i;}};int date::month(){return m;}
//错误,常成员函数实现不能缺少const
int date::year()const{return y++}
//错误:常成员函数不能更新类的数据成员
date const d1;
int j=d1.year;
//正确,常对象可以调用常成员函数
int j=d1.addyear(10);
//错误,常对象不能调用非常成员函数
date d2;
int i=d2.year();
//正确,非常对象可以调用常成员函数。
d2.year()
//正确,非常对象可以调用非常成员函数。

常数据成员、常成员函数相关推荐

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

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

  2. 常数据成员和常成员函数

    常数据成员 引言:类存在的目的之一就是为了实现封装性,但是实际上经常使用公有函数接口去修改其数据成员,为了保证类中可以有一些数据成员绝对不会被修改,所以创造了常数据成员 特点: 1.在定义时要在头部加 ...

  3. 常数据成员、常成员函数、常对象

    常数据成员 常数据成员的初始化只能在类构造函数的初始化表中 MINO::MINO(const char *name, int age, string birth, int height, int we ...

  4. 常对象、常数据成员、常成员函数总结

    # include <iostream> using namespace std;class Time {public:Time(int h = 10, int m = 30, int s ...

  5. C++常数据成员,常成员函数及常对象的使用

    一.常数据成员不可修改,声明方式:const [类型][标识符] 二.常成员函数可以和同名的非常成员函数发生重载,且声明和定义时都要带上const,调用时不需要,声明方式:[类型][函数名](参数列表 ...

  6. 常对象、常数据成员、常成员函数

    C++有不少措施保护数据的安全性,如private保护类的数据成员等. 但对于一些共用的数据,如函数实参与形参等,我们可以在不同的场合通过不同的途径访问同一个数据对象.有时不经意的误操作会改变数据的值 ...

  7. 【C++】 常对象、常数据成员、常成员函数总结

    常数据成员  ◆ 常数据成员必须进行初始化,并且不能被更新.  ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化:普通数据成员在初始化列表和函数体中 ...

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

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

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

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

最新文章

  1. 《我想进大厂》之Spring夺命连环10问
  2. Python原来这么厉害,我震惊了!
  3. JAVA mysql存数组_JAVA数组怎么存放数据库的元素
  4. 大物实验总结模板_期中总结大会amp;期末动员大会
  5. ln命令总结,软链接硬链接文件删除原理画图详解
  6. 2022年中国商业十大热点展望:共同富裕、碳达峰碳中和、创新、数字化、新国货.........
  7. [抄]使用网页进行展示而非PPT
  8. 向国外投稿需要注意些下面几点
  9. 查询SQL中日期条件
  10. oracle 单表查重,Oracle如何用单字段或多字段进行查重
  11. Android Studio控件属性大全
  12. PopupWindow 监听返回键
  13. 判断Linux环境是否装了NCCL,Ubuntu 16.04安装NCCL 2
  14. 如何查看自己的数据库
  15. 彻底搞懂python函数2
  16. 华为手机无线投屏到win10笔记本电脑
  17. 英语原来这么有趣之数词,月份的使用
  18. Linux内核中的汇编语言
  19. 【Python】抓取基金数据,这简直太爱了
  20. 工控协议(一):Ethernet POWERLINK 学习笔记

热门文章

  1. UnicodeEncodeError: 'latin-1' codec can't encode character '\u7537' in position 184: ordinal not in
  2. 安装mysql odbc重启mssql_关于php连接mssql:pdo odbc sql server
  3. 手机通过magisk获取root权限
  4. These critical programs are missing or too old: make compiler
  5. Java在线聊天网站(源码)
  6. ​科普| 远程医疗系统是什么?远程医疗系统有哪些功能?
  7. h5配置rem.js
  8. 有源滤波装置在医疗机构中的重要性及应用
  9. 京东物流与圆通纷纷发力后 高端个人寄件领域将会出现怎样的变化?
  10. 【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(二)