C++中的类与对象

1. 类与对象的概念

类:类是对同一类对象的抽象总结,是一个概念

对象:按照类的规定创建的实体

程序员就是面向对象编程世界中的“上帝”,因此需要先写类的代码,才能按照这段代码创建对应的对象。参考类来创建对象的过程被称为“实例化”。因此,对象无法脱离对应的类存在。

一个类主要包括

  • 属性

用来描述对象的数据元素,通常是一个名词变量,例如:身高、体重、价格等,也称为“成员变量”或“数据成员”。

  • 行为

用来描述对象执行的具体操作,通常对属性进行操作,以动词函数的方式存在,例如:吃饭、睡觉、运行等,也称为“成员函数”或“成员方法”。

成员变量和成员函数统称为“成员”。

2. 类的定义

【例子】以手机为例,来说明类的定义。

规定手机的属性:品牌、型号和重量

手机的成员函数:运行游戏、播放音乐、通信

#include <iostream>

using namespace std;

class MobilePhone // 帕斯卡命名法:所有单词的首字母大写
{
public: // 公有权限:最开放的一种权限
    string brand; // 品牌
    string model; // 型号
    int weight; // 重量

    void run_game() // 运行游戏
    {
        cout << "arknights" << endl;
    }

    void play_music()
    {
        cout << "东方绯想天" << endl;
    }

    void communicate()
    {
        cout << "你好" << endl;
    }
};

int main()
{
    return 0;
}

3. 实例化对象

类是一个抽象的概念,因此需要按照这个概念创建对应的对象实体,C++中有两种类型的对象:

  • 栈内存对象

在生命周期结束(所在的花括号执行完)后,自动被销毁。

栈内存对象使用 . 调用成员。

  • 堆内存对象

需要使用new关键字创建,使用delete关键字销毁,如果不销毁,则会持续存在,容易导致内存泄漏的问题,内存泄漏最终可能会导致程序卡顿,甚至卡死。

堆内存对象通常使用指针来保存堆内存对象的地址。

堆内存对象使用 -> 调用成员,在Qt Creator下,直接打.会转换成 ->

#include <iostream>

using namespace std;

class MobilePhone // 帕斯卡命名法:所有单词的首字母大写
{
public: // 公有权限:最开放的一种权限
    string brand; // 品牌
    string model; // 型号
    int weight; // 重量

    void run_game() // 运行游戏
    {
        cout << "arknights" << endl;
    }

    void play_music()
    {
        cout << "东方绯想天" << endl;
    }

    void communicate()
    {
        cout << "你好" << endl;
    }
};


int main()
{
    // 栈内存对象
    MobilePhone mp1;
    // 调用属性
    mp1.brand = "小米";
    mp1.model = "13 Pro";
    mp1.weight = 216;
    cout << mp1.brand << " " << mp1.model << " "
         << mp1.weight << endl;
    // 调用成员函数
    mp1.communicate();
    mp1.play_music();
    mp1.run_game();

    // 堆内存对象
    MobilePhone* mp2 = new MobilePhone;
    // 调用属性
    mp2->brand = "红米";
    mp2->model = "K60 Pro";
    mp2->weight = 206;
    cout << mp2->brand << " " << mp2->model << " " <<
            mp2->weight << endl;
    // 调用成员函数
    mp2->communicate();
    mp2->play_music();
    mp2->run_game();

    // 手动销毁mp2
    delete mp2;
    // 有时销毁后还能使用部分功能,但是不要这么做
    mp2 = NULL; // 可以赋值为NULL防止delete后调用

    return 0;
}
// 主函数执行完,mp1销毁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值