备案网站ip,wordpress源码整合,做的好看的国内网站欣赏,公司网站建设网站个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 前言#xff1a; 将const 修饰的 “ 成员函数 ” 称之为 const 成员函数 #xff0c; const 修饰类成员函数#xff0c;实际修饰该成员函数 隐含的 this 指针 #xff0c;表明在该成员函数中不能对类的任何成员进行修改…个人主页Lei宝啊
愿所有美好如期而遇 前言 将const 修饰的 “ 成员函数 ” 称之为 const 成员函数 const 修饰类成员函数实际修饰该成员函数 隐含的 this 指针 表明在该成员函数中不能对类的任何成员进行修改。 class Date
{
public:Date():_year(2023),_month(10),_day(28){}void print() const //const限定this指针相当于const Date* this{cout _year - _month - _day endl;}private:int _year;int _month;int _day;
};int main()
{Date a;a.print();return 0;
} 思考下面的几个问题 1. const对象可以调用非const成员函数吗 class Date
{
public:Date():_year(2023),_month(10),_day(28){}void print1() const //const限定this指针相当于const Date* this{cout _year - _month - _day endl;}void print2(){cout _year - _month - _day endl;}private:int _year;int _month;int _day;
};int main()
{Date a;a.print1();const Date b;b.print1();return 0;
}
编译器甚至都没有给出print2这个函数的选项答案自然是不能但为什么不能呢 我们定义的对象b是const类型他的成员变量不能做修改那他的别名的成员变量也不能修改而我们上述代码中b对象不能调用print2函数是因为print2函数有权限放大所以不能调用。 2. 非const对象可以调用const成员函数吗 class Date
{
public:Date():_year(2023),_month(10),_day(28){}void print1() const //const限定this指针相当于const Date* this{cout _year - _month - _day endl;}void print2(){cout _year - _month - _day endl;}private:int _year;int _month;int _day;
};int main()
{Date a;a.print1();const Date b;b.print1();Date c;c.print2();return 0;
} 权限放大不可以但可以有权限的缩小c对象成员变量可以修改也可以不修改他的别名成员变量不可以修改是合理的。 3. const成员函数内可以调用其它的非const成员函数吗 4. 非const成员函数内可以调用其它的const成员函数吗 这里是权限的缩小是OK的