成都创新互联网站制作重庆分公司

C++基础——const成员函数-创新互联

 

目录

创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设、程序开发、网站优化、微网站、微信平台小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都做网站、成都网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。

一.Const成员函数      

1.定义:

2.格式:

3.代码示例:

.h文件:

definition.cpp文件 

特性:

例:

那么const对象既可以调用非const型成员函数吗?

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

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

总结:


一.Const成员函数      

1.定义:

将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,表明在该成员函数中不能对类的任何成员进行修改。

  const修饰成员函数的时候,const需要放在成员函数的后面,不能放在一开始,,若是放在一开始的话,那么const修饰的是函数的返回值,而非是修饰成员函数了。

2.格式:

返回值类型 函数名称 ( ) const {

  //函数体.....

                  }

3.代码示例:

.h文件:
class Date {
public:
	//构造函数不可以使用const修饰,构造函数若加了const就不能初始化值了
	Date(int year = 1199, int month = 12, int day = 15);

	void Print() const;

	void Reset1()const;
	void Reset2();
	void Reset3()const;
private:
	int _year;
	int _month;
	mutable int _day;
};

definition.cpp文件 
Date::Date(int year, int month, int day) {
	_year = year;
	_month = month;
	_day = day;
}
void Date::Print() const{
	cout<< _year<< "-"<< _month<< "-"<< _day<< endl;
}

void Date:: Reset1()const {	
	_day = 1;		
	_month = 2;
	_year = 1970;
}

void Date::Reset2() {	
	_day = 1;
	_month = 2;
	_year = 1970;
}

void Date:: Reset3()const {
	this->_day++;
}

特性:

const修饰的成员函数:实际上修饰的是this指针指向空间的内容不可被修改
有了const修饰的成员函数,其this指针类型:const Date* const  (左定值,右定向)

而普通的成员函数:可以修改成员变量 ,其this指针类型:Date* const

例:
int main() {
	Date d1(2022, 9, 9);
	d1.Print();
	d1.Reset2();
	d1.Print();
	return 0;
}

解析:d1是Date类型,可读可写,Reset函数可读可写,而Print函数仅可读,表明非const对象既可以调用const型成员函数,也可以调用非const型成员函数。 这是权限的平移和缩小。

那么const对象既可以调用非const型成员函数吗?

同样的,权限小的是不能调用权限大的!!! 

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

 不可以,若你把一个函数声明为const类型函数,那么就说明这个函数是只读的,不可修改,
而非const成员函数是可读可写的。

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

可以,外层函数类型Date* const:是可读可写的,而内层函数类型是const Date* const:只读
外层可以修改也可以不修改,到底是否要修改,视情况而定。

总结:

到底要不要使用const去修饰成员函数,就看你函数中的变量需不需被修改,如果不希望被修改,则加上即可。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:C++基础——const成员函数-创新互联
当前路径:http://cxhlcq.cn/article/djpiip.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部