C++const成员
我们将const修饰的“成员函数”称为const成员函数,将const放在函数后面,看似修饰的是函数,但实际上修饰的是成员函数内隐藏的this指针,这表明在该成员函数中不能对类的任何成员变量进行修改。
class Date
{
public: void Print() const //const修饰的是this指针{cout << "void Print() const" << endl;}
private:int _year;int _month;int _day;
};
注:const对象不能调用非const成员函数,权限的放大
非const对象可以调用const成员函数,权限的缩小
const成员函数不能调用其它非const成员函数,权限的放大
非const成员函数可以调用其他const成员函数,权限的缩小
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << "Print()" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}void Print() const{cout << "Print()const" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date d1(2022, 1, 13);//既可以调用非const修饰的Print函数又可以调用const修饰的Print函数d1.Print();const Date d2(2022, 1, 13);//只能调用const修饰的Print函数d2.Print();return 0;
}
如果将上述代码中,const修饰的成员函数屏蔽,报错如图: