# include <iostream>
using namespace std;
class Time
{
public:
Time(int h = 10, int m = 30, int s = 59):hour(h), minter(m), sex(s){};
//void out_value();
void out_value() const; //常成员函数可以引用非常对象和常对象的成员变量(如输出或者计算),但不能修改
void set_value(int, int, int);
//void Time::set_sex(int);
void Time::set_sex(int) const;
private:
int hour;
//conset int hour; //被定义为常数据成员,该变量只能通过参数初始化表初始化
//可以被常成员函数和普通成员函数引用,但不能被修改
int minter;
int sex;
//mutable int sex; //声明为mutable后的常对象中的成员变量可以被修改,但只能被常成员函数修改
};
int main(void)
{
//Time t1;
//int *p;
//t1.hour = 1;
//p = &t1.hour; //无法指向私有对象成员变量
//void (Time:: *p2)() = &Time::out_value; //定义时指定指向的对象
//(t1.*p2)(); //通过指向成员函数的指针调用函数
//Time const t2(12, 34, 46); //定义常对象时必须同时初始化,
//只保证其数据成员是常数据成员,且不能调用它的普通成员函数
//或者const Time t2(12, 34, 46);
//t2.set_value(10, 10 ,10); //error,常对象的成员变量不能被修改
//t2.set_sex(59); //正确,sex声明为mutable,可以被常成员函数修改
//t2.out_value(); //不能通过常对象调用它的普通成员函数,只能调用它的常成员函数
return 0;
}
/*
void Time::set_value(int h, int m, int s)
{
hour = h;
this->hour = h;
(*this).hour = h;
minter = m;
sex = s;
}*/
void Time::out_value() const
{
cout << hour << ":" << minter << ":" << sex << endl;
}
void Time::set_sex(int s) const
{
//sex = s;
}
常对象、常数据成员、常成员函数总结
最新推荐文章于 2023-07-11 11:41:19 发布