C++面向对象 class one

  • 面向对象:封装,继承,多态
#include <iostream>
using namespace std;
class Clock{//类命首字母一般大写
public:
    //Clock(){} 构造函数(Constructor)函数名与类名一样,没有任何返回值类型,定义类时自动调用
    //如果定义了构造函数,C++不再自动定义
    Clock(){//定义构造函数时,保证有一个能涵盖默认构造函数
        hour=minute=0;
        cout<<"Create Clock"<<' '<<hour<<' '<<minute<<endl;
    }
    Clock(int h,int m){
        hour=h;
        minute=m;
        cout<<"Create Clock"<<' '<<hour<<' '<<minute<<endl;
    }
    ~Clock(){//析构函数(de-Constructor)只能有一个,不能重载,不能带参数,销毁时自动调用
        cout<<"Clock"<<' '<<hour<<' '<<minute<<endl;
    }//调用顺序与构造函数相反(构造函数按定义顺序调用)
    void setTime(int h){//函数重载(overload),参数表不一样
        hour = h;
        minute = 0;
    }
    void setTime(int h,int m = 0)//带缺省值(默认值)的函数,参数从左向右传递,因此当定义默认值时,从这个参数往后都要有默认值
    {
        setHour(h);//可以调用其它成员方法
        setMinute(m);
//        hour = h;
//        minute = m;
    }
    //当同时使用函数重载与缺省值的时候,要考虑是否冲突,如上述情况当只给一个参数的时候会有歧义
    void setHour(int h){//成员方法
        hour = h;
        //this->hour = hour   //this指针,类似于结构体调用成员,当参数名与数据成员名一样时必须用this
    }
    void setMinute(int m){//首字母小写,第二个字母大写
        minute = m;
    }
    void showTime(){

        cout<<hour<<":"<<minute<<endl;
    }
    bool compareBefore(const Clock &c)//const:限定c不能修改,常引用
    {
        if(hour==c.hour)
            return minute<c.minute;
        return hour<c.hour;
    }
private://习惯private的数据成员放最后
    int hour,minute;//数据成员

};
int main()
{
    Clock c1,c2(20,35);//定义对象,申请内存,存数据成员和函数地址
    Clock clocks[3]={Clock(20,46),Clock(20,46)};// 有几个初始化几个
    Clock *pc = new Clock(20,43);//pc指针指向新对象,c++不会自己释放
//    c1.setHour(19);//目前所学,通过对象调用成员函数
//    c1.setMinute(25);
//    c1.showTime();
//    c2.setTime(19,35);
//    c2.showTime();
//    cout<<c1.compareBefore(c2)<<endl;
//    c3.setTime(18);//error: call of overloaded 'setTime(int)' is ambiguous   出现歧义
    int a = 10;
    int c = 20;
    int &b = a;//引用(reference),这里&表示引用,相当于给a起了别名,还是原来那个东西
    const int &d = a;//常引用,不能通过常引用改变a的值
    cout<<a<<' '<<b<<' '<<c<<endl;
    b = c;//相当于赋值给a
    c = 30;
    cout<<a<<' '<<b<<' '<<c<<endl;
//    int &b;   使用引用必须初始化,且定义引用之后不能更改
    delete pc;
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈希表扁豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值