我是靠谱客的博主 传统画笔,最近开发中收集的这篇文章主要介绍C++语言—类的const成员,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

const修饰普通变量:
在C++中,const修饰的变量已经为一个常量,具有宏的属性,即在编译期间,编译器会将const所修饰的变量进行替换。
const修饰类成员:

 const修饰类成员变量时,该成员变量必须在构造函数的初始化列表中初始化

 const修饰类成员函数,实际修饰该成员函数隐含的this指针指向的内容,该成员函数中不能对类的任何成员进行修改

class Date
{
public:
	Date(int year,int month,int day)
		:_year(year)  //_year只能在此处初始化
		,_month(month)
		,_day(day)
	{}
	void show() const
	{
//		this->_day = 2018;  //函数体内无法改变类成员变量
		cout << _year<<"-"<< _month<<"-"<< _day << endl;
	}
private:
	const int _year;
	int _month;
	int _day;
};

 在const修饰的成员函数可能需要对类的某个成员变量进行修改,该成员变量只需被mutable关键字修饰即可

来看看以下几种场景:

1. 和const对象可以调用非const成员函数const成员函数吗?

2. 非const对象可以调用非const成员函数和const成员函数吗?

3. const成员函数内可以调用其它的const成员函数和非const成员函数吗?

4. 非const成员函数内可以调用其它的const成员函数和非const成员函数吗?

通过以下代码及其中的注释理解这里的问题是很容易的:

class Date
{
public:
	Date(int year,int month,int day)
		:_year(year)
		,_month(month)
		,_day(day)
	{}

	void Displayinfo()  //非const函数
	{
		showinfo();  //非const成员函数可以调用const成员函数
		cout << _year << "-" << _month << "-" << _day << endl;
	}

	void showinfo() const  //const函数
	{
//		Displayinfo();  //const成员函数不可以调用非const成员函数
		cout << _year<<"-"<< _month<<"-"<< _day << endl;
	}
private:
	const int _year;
	int _month;
	int _day;
};

void test1()
{
	const Date d1(2000,1,1);  //const对象
	Date d2(2018, 9, 6);  //非const对象

//	d1.Displayinfo();  //const对象不可以调用非const成员函数
	d1.showinfo();   //const对象可以调用const成员函数

	d2.Displayinfo();  //非const对象可以调用非const成员函数
	d2.showinfo();  //非const对象可以调用const成员函数
}

 关于类的const成员这块就说这么多

最后

以上就是传统画笔为你收集整理的C++语言—类的const成员的全部内容,希望文章能够帮你解决C++语言—类的const成员所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(145)

评论列表共有 0 条评论

立即
投稿
返回
顶部