C++小结

/*
目的:
     以前学过C++,但是现在全忘了。现在想把C++主要的知识点包含在一段程序里面
     这样以后在要用C++的时候,可以轻松的上手,不会连一些C++基本的概念都忘了
*/

#include<iostream>
using namespace std;

class Clock                       //类名 时钟类
{
public:                          
 Clock(){}                     //默认构造函数,建立无参对象时调用
 Clock(int, int, int);         //带参构造函数,建立带参数对象时调用。
                               //这里要说明的是,类的构造函数可以有多个,但析构函数只能有一个
 Clock(Clock& k){}             //拷贝构造函数,当通过对象赋值调用,这里还涉及到浅拷贝和深拷贝(就是是否真正拷贝对象的资源)
 ~Clock(){}                    //析构函数,对象结束时调用,主要用来释放对象申请的资源。建议析构函数前加上virtual
                               //一般在构造函数中用 new在堆中申请内存,在析构函数中用 delete释放
 void setTime(int, int, int);  //成员函数,设置时间
 void showTime();              //成员函数,显示时间
 virtual void print();         //虚函数,一般编译的次序是先期联编,申明为虚函数编译器会迟后联编
 static int sum;
 static int get_sum(){return sum;}  //静态成员函数,可以访问静态数据成员,他们都不属于对象,而是属于类的。
private:                               //静态成员函数的调用形式是:  Clock::get_sum();
 int H;                        //私有成员,hour(小时)
 int M;                        //私有成员,minite(分钟)
 int S;                        //私有成员,second(秒钟)
};

int Clock::sum = 0;              //静态数据成员必须在类内申明,在类外初始化

void Clock::setTime(int h,int m, int s)  //成员函数的实现
{
 H = h;
 M = m;
 S = s;
}

void Clock::showTime()         //成员函数实现
{
 cout<<H<<":"<<M<<":"<<S<<endl;
}

void Clock::print()            //成员函数实现
{
 cout<<"This is in class Clock print!"<<endl;  //主要用来说明虚函数问题!
}

Clock::Clock(int h, int m, int s)       //带参数构造函数的实现
{
 H = h;
 M = m;
 S = s;
}

class AlarmClock:public Clock           //类名  闹钟类, 公有继承了Clock,AlarmClock对Clock中的
{                                       //所有数据成员和成员函数,拥有和Clock一样的权限
public:                                 //protected继承下来的全是protected权限,private继承下来的全是private权限
                                        //这里的权限需要注意,就是在派生类中可以根据权限,对象可以访问public成员
                                     //成员函数可以访问public和protected成员。
 AlarmClock();                     //默认构造函数
 AlarmClock(int,int,int,int,int);  //带参数构造函数
 virtual void print();
private:
 int AH;                       //私有成员,闹钟小时
 int AM;                       //私有成员,闹钟分钟
};

AlarmClock::AlarmClock(int ah,int am,int h,int m,int s):Clock(h,m,s)
{                                 //用冒号加类名初始化基类
 AH = ah;                      //这在初始化一个其它类的数据成员时,必须这样做
 AM = am;
}

void AlarmClock::print()            //成员函数实现
{
 cout<<"This is in class AlarmClock print!"<<endl;  //主要用来说明虚函数问题!
}

void func(Clock& c1)        //这个函数用来说明虚函数问题
{
 c1.print();             //如果不申明为虚函数,c1不知道调用基类还是派生类的print();
}                           //这里可以显示的调用,如 Clock::print();

int main()
{
 AlarmClock ac(8,0,7,0,0);
 func(ac);

 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值