从客观事物中抽象出类的例子

本文探讨了在面向对象编程中如何从客观事物抽象出类,并介绍了成员函数的两种调用方式:对象.成员名和指针->成员名。同时,提到了成员函数体可以与类的定义分开书写,并可通过对象、对象指针或引用进行调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写一个程序,输入矩形的宽和高,输出面积和周长
·矩形的属性-宽和高
    ·两个变量,分别代表宽和高
·对矩形的操作
    ·设置宽和高
    ·计算面积
    ·计算周长
class Rectangle{
    public:
        int w, h;
    void Init(int w_, int h_){
        w = w_;
        h = h_;
    }
    int Area(){
        return w * h;
    };
    int Perimeter(){
        return 2 * (w + h);
    }
};

int main(){
    int w, h;
    Rectangle r;//r是一个对象
    cin>>w>>h;
    r.Init(w, h);
    cout<<r.Area()<<endl<<r.Perimeter();
    return 0;
}

·类定义的变量-->类的实例-->“对象”
·对象的内存空间
    ·对象的大小 = 所有成员变量的大小之和
    ·E.g. Rectangle类的对象,sizeof(Rectangle) = 8
·每个对象各有自己的存储空间
    ·一个对象的某个成员变量被改变,不会影响到其他的对象
·对象间的运算
    ·对象之间可以用 = 进行赋值
    ·不能用 == != > < >= <= 进行比较

        ·除非这些运算符经过了"重载"

用法1:对象名.成员名

    Rectangle r1, r2;
    r1.w = 5;
    r2.Init(3, 4);

用法2:指针->成员名

    Rectangle r1, r2;
    Rectangle *p1 = &r1;
    Rectangle *p2 = &r2;
    p1->w = 5;
    p2->Init(3, 4);//Init作用在p2指向的对象上
用法3:引用名.成员名
    Rectangle r2;
    Rectangle & rr = r2;
    rr.w = 5;
    rr.Init(3,4);//rr的值变了,r2的值也变

另一种输出结果的方式:

    void PrintRectangle(Rectangle &r){
        cout<<r.Area()<<","<<r.Perimeter();
    }
    Rectangle r3;
    r3.Init(3, 4);
    PrintRectangle(r3);
类的成员函数的另一种写法

·成员函数体和类的定义分开写

    class Rectangle{
        public:
            int w, h;
            int Area();//成员函数仅在此声明
            int Perimeter();
            void Init(int w_, int h_);
    }
    int Rectangle::Area(){
        return w * h;
    }
    int Rectangle::Perimeter(){
        return 2 * (w + h);
    }
    void Rectangle::Init(int w_, int h_){
        w = w_;
        h = h_;
    }

调用通过:对象/对象的指针/对象的引用


感谢北大!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值