C++ 面向对象 类

面向对象:
对象 = 数据(数据类型)+ 算法
从客观事物抽象出类:例如生活中的洗衣机、冰箱。
洗衣机的属性:
1)外观上:长、宽、高、类型(滚筒、波轮)、品牌(小天鹅、海尔)
2)功能上:洗衣服
伪代码理解:

//C语言的描述
struct 洗衣机
{
    int nwidth;
    int nheight;
    int nlength;
    int ntype;
    int nbland;
};
void 洗衣服(洗衣机,衣服);
{   //洗衣服函数体
    }
int main()
{
    洗衣机 海尔洗衣机;
    衣服 脏衣服;
    洗衣服(海尔洗衣机,脏衣服);
}
//由于洗衣机与衣服之间的关联不够密切
    冰箱 海尔冰箱;
    洗衣服(海尔冰箱,脏衣服);
//C++语言描述,将洗衣机的功能函数放进函数体中
struct 洗衣机   //class 洗衣机  {······}
{
    int nwidth;
    int nheight;
    int nlength;
    int ntype;
    int nbland;
    void 洗衣服(衣服);
};  //封装
int main()
{
    洗衣机 海尔洗衣机;
    海尔洗衣机.洗衣服(脏衣服); //调用洗衣机结构体中的洗衣服函数
}
//此时在使用冰箱洗衣服就不能实现了,因为在定义的冰箱中没有洗衣服的功能函数,此处是面向对象的封装性的体现

实例:
1)将长、宽变量和设置长,宽,求面积,以及求周长的
三个函数“封装”在一起,就能形成一个“矩形类”。
2)长、宽变量成为该“矩形类”的“成员变量”,三个
函数成为该类的“成员函数” 。 成员变量和成员函
数统称为类的成员。
3)实际上,“类”看上去就像“带函数的结构”。

#include <iostream>
using namespace std;
class CRectangle
{
    public:
    int w, h; //成员变量
    int Area() {  //成员函数
    return w * h;
    }
    int Perimeter(){  //成员函数
    return 2 * ( w + h);
    }
    void Init( int w_,int h_ ) {
    w = w_; h = h_; //此函数可用来对数据的检验
    }
}; //必须有分号
int main( )
{
    int w,h;
    CRectangle r; //r是一个对象
    cin >> w >> h;
    r.Init( w,h); //调用方式与结构体大同小异
    cout << r.Area() << endl <<r.Perimeter();
return 0;
}

(1)成员函数、与成员变量的访问属性:
– private: 私有成员,只能在成员函数内访问
– public : 公有成员,可以在任何地方访问
– protected: 保护成员
(2)使用类的成员变量和成员函数
用法1:对象名.成员名
!!!在class里如果未定义,默认为private。

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

用法2. 指针->成员名

CRectangle r1,r2;
CRectangle * p1 = & r1;
CRectangle * p2 = & r2;
p1->w = 5;
p2->Init(5,4); //Init作用在p2指向的对象上

用法3:引用名.成员名

CRectangle r2;
CRectangle & rr = r2;
rr.w = 5;
rr.Init(5,4); //rr的值变了,r2的值也变
void PrintRectangle(CRectangle & r)
{ cout << r.Area() << ","<< r.Perimeter(); }
CRectangle r3;
r3.Init(5,4); 
PrintRectangle(r3);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值