五天速成C++-----第二天

面向对象基础

1.类与对象的概念

面向对象三大特征:封装 ,继承,多态

类与对象

:同一类事物(对象)共同特征概括提取出来,就形成了类。是个抽象的概念

对象:由类创建的具体实体 

对象中包括属性和行为 

属性:用来描述对象的数据,通常是名词

行为:用来描述对象的操作,通常是动词

手机   属性 :内存 ,品牌 ,型号,重量

          行为: 播放音乐  运行游戏   播放视频   通讯

人      属性: 姓名   性别   年龄

          行为: 吃饭   睡觉   玩游戏  学习

长方形  属性:长 宽

             行为:求面积   求周长

属性通常称为数据成员 /成员变量

行为通常称为成员函数/成员方法

成员函数和成员变量统称为对象的成员

手机类:

#include <iostream>
using namespace std;
class MobliePhone{ //class是类的关键字  通常类名首字母大写
public: //public权限是公共权限 ,在类内和类外都可以访问
    string brand;
    string model;
    double weight;
    void play_music()
    {
        cout<<"播放《爱你一万n》"<<endl;
    }
    void run_game()
    {
        cout<<"运行《原神666》"<<endl;
    }
    void play_video()
    {
       cout<<"播放《狂飙666》"<<endl;

    }
    void show()
    {
        cout<<"品牌"<<brand<<" "<<"型号"
           <<model<<" "<<"重量"<<weight;
    }

};

int main()
{

}

2.类的实例化

由类创建对象的过程叫类的实例化

对象的创建有两种:1.栈内存对象  2.堆内存对象

栈内存对象:出了作用范围(两个花括号之间)自动的销毁,调用成员使用 对象名.成员的方式来调用

堆内存对象:使用new关键字进行创建。堆内存对象使用对象指针来保存堆内存对象的地址,对象指针使用 ->的方式访问成员。

堆内存对象不会自动销毁,需要delete关键字进行手动销毁。如果不销毁,这块内存会被持续占用,造成内存泄漏,造成程序的卡顿。通常delete对象指针后,把对象指针置为NULL

#include <iostream>
using namespace std;
class MobliePhone{ //class是类的关键字  通常类名首字母大写
public: //public权限是公共权限 ,在类内和类外都可以访问
    string brand;
    string model;
    double weight;
    void play_music()
    {
        cout<<"播放《爱你一万n》"<<endl;
    }
    void run_game()
    {
        cout<<"运行《原神1》"<<endl;
    }
    void play_video()
    {
       cout<<"播放《狂飙66》"<<endl;

    }
    void show()
    {
        cout<<"品牌"<<brand<<" "<<"型号"
           <<model<<" "<<"重量"<<weight;
        cout<<endl;

    }
};
int main()
{
    //栈内存对象
    MobliePhone phone1; //phone1是对象名字
    phone1.brand="华";
    phone1.model="P60";
    phone1.weight=100;
    phone1.play_music();
    phone1.play_video();
    phone1.run_game();
    phone1.show();

    //堆内存对象
    MobliePhone * phone2=new MobliePhone;
    phone2->brand="iphon";
    phone2->model="13pro";
    phone2->weight=120;
    phone2->show();
    delete phone2; //delete释放phone2指针指向的堆内存
    cout<<phone2<<endl; //0x7518f8 但是指针还保留着释放内存的地址
    phone2=NULL; //为了安全,指针指向置为NULL

}

类与对象练习:

Car类 属性:brand 品牌  seat 座位数量   wheel 轮子数量

          方法  run()  xx牌的汽车在行驶

                    show()  打印出上面的属性信息

分别实例化栈和堆内存对象。来调用方法

#include <iostream>
using namespace std;
class Car{
public:
    //brand 品牌  seat 座位数量   wheel 轮子数量
    string brand;
    int seat;
    int wheel;
    void run(){
        cout<<brand<<"牌的汽车在行驶"<<endl;
    }
    void show(){
        cout<<"品牌:"<<brand<<" 座位数量:"<<seat<<" 车轮数量:"<<wheel<<endl;
    }

};
int main()
{
    //栈内存对象
    Car car1; //创建car1对象
    car1.brand="奥迪迪";
    car1.seat=5;
    car1.wheel=4;
    car1.run();
    car1.show();

    //堆内存对象
    Car * car2=new Car;
    car2->brand="宝马马";
    car2->seat=4;
    car2->wheel=4;
    car2->run();
    car2->show();
    delete car2;
    car2=NULL;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

别睡了.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值