首页 > 编程语言 >【C++】类与对象(中)_7.const成员函数

【C++】类与对象(中)_7.const成员函数

时间:2024-08-13 23:22:43浏览次数:16  
标签:const 函数 成员 C++ Date 修饰 Display

7.const成员

7.1 const修饰类的成员函数

将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
在这里插入图片描述
我们来看看下面的代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
class Date
{
public:
	void Display()
	{
		cout << "Display ()" << endl;
		cout << "year:" << _year << endl;
		cout << "month" << _month << endl;
		cout << "dat" << _day << endl;
	}
	void Display() const
	{
		cout << "Display () const" << endl;
		cout << "year:" << _year << endl;
		cout << "month:" << _month << endl;
		cout << "dat:" << _day << endl << endl;
	}
private:
	int _year; //年
	int _month;//月
	int _day;  //天
};

void Test()
{
	Date d1;
	d1.Display();

	const Date d2;
	d2.Display();
}

请思考下面的几个问题:

  1. const对象可以调用非const成员函数吗?
  2. 非const对象可以调用const成员函数吗?
  3. const成员函数内可以调用其它的非const成员函数吗?
  4. 非const成员函数内可以调用其它的const成员函数吗?

标签:const,函数,成员,C++,Date,修饰,Display
From: https://blog.csdn.net/m0_46676283/article/details/141162107

相关文章

  • 虚幻引擎5 C++基础 C++各类宏的作用
    1.GENERATED_BODY()//自动生成的宏,不直接使用父类的构造函数,如果需要做初始化操作,需要在自己的.h头文件中声明构造函数。在Cpp文件中实现,同时是private。//GENERATED_UCLASS_BODY(),使用父类的构造函数,进行初始化操作不需要.h文件中声明,可以直接在CPP文件中实现构造函数。//UPROP......
  • C++ 适配器 stack
    不了解适配器的读者可以先去看一看这一篇博客:C++适配器-CSDN博客栈数据结构介绍我们平时洗碗的时候,叠成一层层的碗最后只能从上面往下面开始拿;平时箱子里面叠的衣服,也是只能从上面慢慢拿。先放进去的东西后拿出来,这种内存特点的数据结构就叫栈。就像一个只有单边口的容器......
  • [MVG] 鲁棒估计: RANSAC & 鲁棒核函数
    https://zhuanlan.zhihu.com/p/62175983在VSLAM中,我们首先构造3D-3D、3D-2D、2D-2D匹配,然后据此去估计相机的运动。完美估计需要完美的匹配,但实际的匹配中往往存在很多错误。如何消除或者降低错误匹配的影响呢?一种方法是选择那些正确的匹配进行估计(RANSAC),另一种是降低那些错误匹......
  • 一次函数最优化数据结构
    哎呀没写完,明天再补吧李超线段树一个节点维护递归到这个点,包含整个区间,并且在mid处取值最大的线段。若有两条线段,其中x比y在mid处值更大,如果x在l和r处值都比y大,显然y没有用。否则y只可能在左区间或右区间比x优。李超线段树利用单侧递归保证时间复杂度。但是李超线段树不便于......
  • C语言——指针(数组,函数)
    通过指针引用数组数组元素的指针数组指针:数组中的第一个元素的地址,也就是数组的首地址指针数组:用来存放数组元素地址的数组(存放数组元素指针的变量),称之为指针数组。eg://定义一个一维数组inta[]={1,4,9};//使用指针变量存储数组的第一个元素的首地址,也就是数组......
  • C++入门基础知识12
    C++的关键字(接上一篇博文)!! 1.asmasm(指令字符串):允许在C++程序中嵌入汇编代码。2.autoauto(自动,automatic)是存储类型标识符,表明变量"自动"具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。3.boolbool(布尔)类型,C++中的基本数据结构,其值......
  • 微软NET FrameWork离线运行库+离线安装包合集,一键安装版 微软.NET离线运行库合集2024
     微软.NET离线运行库合集2024最新版是一款专为便捷、高效地管理.NET运行库而设计的工具。这款软件集成了各种版本的.NET运行库,并提供了离线安装的功能,使用户能够在没有网络连接的情况下轻松地安装所需的运行库。该软件的出现极大地简化了.NET开发环境的配置和维护过程。用户可......
  • P7561 [JOISC 2021 Day2] 道路の建設案 (Road Construction)
    这篇文章主要讲一下问什么要二分以后还要check(l-1),以及怎么找距离小于等于\(k\)的边的数量。题目给定\(n\)个点,求出任意两个点的曼哈顿距离的集合的前\(k\)大。思路我们先将曼哈顿距离转化为切比雪夫距离:我们知道形如\((x,y)\)点之间的曼哈顿距离等于\((x+y,......
  • CMake 构建 C++ 项目
    使用CMake构建C++项目便于跨平台开发,在Linux上可以生成makefile,并通过make来进行编译。在Windows上可以生成.sln项目,并结合VS继续进行开发,或MSVC编译器来直接将项目编译成目标文件。1、创建.cpp文件,以编译成exe程序#include<iostream>intmain(){printf("h......
  • 计算机视觉1:cv2模块函数学习
    cv2模块函数学习importcv2ascv (下文同一用cv)1.cv.imread()cv.imread(filename[,flags]) -> retval其中,参数filename表示要读取得图像得文件名,flags表示读取模式,取值如下:flags=2,表示载入的图像深度为16位或者32位,就返回对应深度的图像,否者转换为8位图像再返......