c++类与对象,数据的共享与保护 小节简单程序实例
#include<iostream>
using namespace std;class Clock //Clock 类定义
{
private: //私有数据成员
double _hour ;double _minute , _second; //一般变量
const int century; //常变量
static const int year; //静态常变量
public: //外部接口
Clock(double hour, double minute, double second); //构造函数
Clock(Clock &c); //复制构造函数(一种构造函数)
void print(); //输出一行字符串
void print()const; //overload(重载)
friend double shijiancha_hour(const Clock &a,const Clock &b);//友元函数(用到了常引用参数)
~Clock(){}; //析构函数
};
Clock::Clock(double hour=0, double minute=0, double second=0)
:century(21) //非静态常数据成员只能通过初始化列表来初始化
{
_hour = hour;
}
const int Clock::year = 2015; //静态常数据成员在类外单独初始化
Clock::Clock(Clock &c) //复制构造函数的实现
: century(21)
{
_hour = c._hour;
_minute = c._minute;
_second = c._second;
}
void Clock::print() //一般成员函数的实现
{
cout << "调用一般函数" << endl;
}
void Clock::print()const //常成员函数的实现
{
cout << "调用常成员函数" << endl;
}
double shijiancha_hour(const Clock &a, const Clock &b) //友元函数的实现
{
double result;
result = a._hour - b._hour;
return result;
}
int main()
{
Clock a(1, 1, 1); //创建Clock类对象
const Clock aa(2, 2, 2); //创建Clock类常对象
a.print(); //自动调用void print()
aa.print(); //自动调用void print()const
cout << "友元函数求小时差:" << shijiancha_hour(a, aa) << endl;
return 0;
}