目录
1、常对象的使用
#include <iostream>
using namespace std;
class Time{
mutable int min ;
const int sec ;
public :
int hour ;
Time(int h=0 , int m=0 , int s=0):hour(h),min(m),sec(s){}
/*若在类外:
Time::Time(int h){
hour = h ;
} 对于常数据成员,这是非法的,不能对其赋值!*/
void display_1() ;
void display_2() const{ //将函数声明为常对象函数
cout << "时间:" << hour << ":" <<min << ":" <<sec <<endl;
}
/*void write() const{
hour = 1 ;
cout << "hour= " << hour << endl;
} 常成员函数不能修改对象的数据成员 */
void write_1() const{
min = 1 ;
cout << "min= " << min <<endl;
}
void write_2() const ;
void write_3() {
min=3;
cout << "min= " << min << endl;
}
/*void write() {
sec = 1 ;
cout << "sec= " << sec <<endl;
}常数据成员只能通过构造函数的参数初始化表进行初始化,其他任何函数都不可对其赋值*/
};
void Time :: write_2() const //常成员函数在类外的定义。
{ //const是函数类型的一部分,在声明函数和定义函数时都要有const关键字,调用时不用加
min = 2 ;
cout << "min= " << min << endl;
}
void Time::display_1(){
cout << "时间:" << hour << ":" <<min << ":" <<sec <<endl;
}
class Used{
const int size ;
int mount ;
public:
Used(int , int ) ;
void show() const{ //常成员函数可以引用const数据成员,也能访问非const数据成员
cout << "size= " << size << '\t' << "mount= " << mount << endl;
}
void write(){
mount = 2 ;
cout << "mount= " << mount << endl;
}
};
/*Used::Used(int s){
size=s;
} 这就是刚才的例子:常数据成员不能被赋值 */
//在类外的正确定义: !!!
Used :: Used(int s,int m):size(s),mount(m){}
int main()
{
Time t ;
t.display_1();
cout << "hour=" << t.hour << endl;
Time const t1;
//t1.display_1(); 不能调用常对象中的普通成员函数
t1.display_2(); //常对象只能调用其常成员函数
t1.write_1() ; //通过对数据成员声明mutable,使其变为可变的数据成员,
//就可以用声明为const的成员函数修改它的值。
t1.write_2();
t.write_3(); //这行证明了不用声明const的成员函数也能修改它的值。。。
Time t3(1,1,1) ;
t3.display_1();
Used u(1,1);
u.show();
u.write(); //一般函数能引用本类中的非const数据成员,也可修改。
return 0;
}
2、类对象的初始化
#include <iostream>
using namespace std ;
class Time{
int hour ;
int min ;
int sec ;
public :
Time(){
hour=23 ;
min=59 ;
sec=59 ;
}
void set();
void show();
};
void Time::set(){
cin >> hour >> min >> sec ;
}
void Time::show(){
cout << "时间:" << hour << ":" << min << ":" << sec <<endl;
}
//同样可以在类外定义,在类内声明。
class Date{
int year ;
int month ;
int day ;
public:
Date();
show(){
cout << year << "/" << month << "/" << day <<endl;
}
};