一、常数据成员
1、定义
用const修饰的数据成员

const int  hour;//定义const为常数据成员

2、初始化
不能采用在构造函数中对常数据成员进行赋初值的方法,因为常数据成员是不能被赋值的。

构造函数只能用参数初始化列表对常数据成员进行初始化
Time ::Time (int h):hour(h){}//通过参数初始化表对常数据成员进行初始化

3、访问规则

  • 普通成员函数可以引用常数据成员,但是不能修改其值
  • 常成员函数可以引用常数据成员,但是不能修改其值
    二、常成员函数
    1、定义
    常成员函数是指由const修饰符修饰的成员函数
void getTime() const;//在声明和定义常成员函数时都要有const关键字,在调用时不必加

2、访问规则

  • const对象只能调用const成员函数
  • const成员函数可以引用常数据成员和普通数据成员,但是不能修改其值
  • const成员函数只能调用const成员函数,不能调用普通成员函数
  • 普通对象可以调用const成员函数
    3、本质
    常成员函数的const实际上修饰的是this指针使之成为常this指针
void getTime(const Time *const this)

普通成员函数编译完是

void getTime(Time *const this)

4、注意

  • 普通的成员函数和常成员函数互为重载
  • 任何不修改成员数据的函数都应该声明为const函数,这样有助于提高程序的可读性和可靠性
  • const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。有人可能会问:为什么不将const放在函数声明前呢?因为这样做意味着函数的返回值是常量,意义完全不同。

C++类的常数据成员和常成员函数相关推荐

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

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

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

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

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

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

  4. C++ 类与对象_类的其他成员(常成员,静态成员,友元)

    系列文章目录 重新复习c++,所以把书中的重点内容整理成博客,尽量简洁,易懂. C++ 类与对象_类和对象的定义与访问 (定义类和对象,访问对象成员,this指针) C++ 类与对象_构造函数和析构函 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. H5前端框架推荐合集 (转)
  2. Java毕设动物管理系统_java毕业设计_springboot框架的现代化动物园管理系统EB
  3. 产品认知:产品经理需要具备哪些核心竞争力?
  4. 中兴f650是千兆的吗_装宽带送的光猫自带WiFi功能,我还需要买路由器吗?
  5. 计算数字的位数并逆序输出
  6. 树状结构大数据类型的高效支持
  7. 辗转相除法(欧几里得算法)求解最大公约数、最小公倍数
  8. Java 基础整理(一)
  9. java解决斐波那契数列(Fibonacci sequence)
  10. cisco 基础配置命令中文解析 1
  11. 关于MongoDB时区问题
  12. 手写一些js方法收集:
  13. HDU1215 七夕节(模拟 数学)
  14. 太卷了,这篇 CPU Cache,估计没人看
  15. 令牌环算法_一环(令牌)将它们全部统治
  16. ApiPost使用教程
  17. 有道云笔记·协作android版,【每天一品】有道云笔记协作
  18. Transaction-based classification and detection approach for Ethereum smart contract
  19. [魔改整合] [Mod整合包] [1.12.2][Mod整合包]幸运贪婪超级整合-超多好玩的mod
  20. 爪哇国新游记之八----读写文件及数组排序

热门文章

  1. 操作系统锁的实现方法有哪几种_深入理解多线程(四)—— Moniter的实现原理
  2. 迅捷PDF转Word转换器
  3. guava深入理解(3)-字符串,实用方法,函数式编程
  4. 使用jquery.lazyload.js图片预加载(懒加载)遇到的问题,图片加载不出来
  5. 短网址还原 php,php简单实现短网址(短链)还原的方法(测试可用),php还原_PHP教程...
  6. IDV VDI TCI RDS区别
  7. edg击败we视频_lpl2018春季赛2月4日WEvsEDG比赛视频:EDG2:1击败WE
  8. svchost.exe占网速解决方法
  9. katacontainers二进制安装
  10. 使用Intellij来实践测试驱动开发 TDD Kata