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.格式:3.代码示例:.h文件:返回值类型 函数名称 ( ) const {
//函数体.....
}
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;
}
那么const对象既可以调用非const型成员函数吗?解析:d1是Date类型,可读可写,Reset函数可读可写,而Print函数仅可读,表明非const对象既可以调用const型成员函数,也可以调用非const型成员函数。 这是权限的平移和缩小。
同样的,权限小的是不能调用权限大的!!!
问题3.const成员函数内可以调用其它的非const成员函数吗? 不可以,若你把一个函数声明为const类型函数,那么就说明这个函数是只读的,不可修改,
而非const成员函数是可读可写的。
可以,外层函数类型Date* const:是可读可写的,而内层函数类型是const Date* const:只读
外层可以修改也可以不修改,到底是否要修改,视情况而定。
到底要不要使用const去修饰成员函数,就看你函数中的变量需不需被修改,如果不希望被修改,则加上即可。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章名称:C++基础——const成员函数-创新互联
分享路径:http://pwwzsj.com/article/djpiip.html