2.如何创建自己的类

第一步:核心概念------如何设计一张"蓝图"

创建自己的类,本质上就是在设计一张"蓝图"。这张蓝图描述了一类事物"是什么"以及"能做什么"。

创建类的核心三要素:

  1. 类名 (Class Name) :给你的蓝图起一个清晰的名字,比如 Car , Dog , BankAccount 。类名通常首字母大写。

  2. 属性 (Attributes / Member Variables) :这类事物有哪些特征?这些就是类的"属性",用变量来表示。

    • 比如 Car 类有 color (颜色)、 brand (品牌)、 speed (速度)。
    • 这些属性通常被设为 private (私有) ,意味着它们被保护起来,外界不能直接乱动,就像汽车引擎盖下面的零件,不应该让外人随便碰。
  3. 方法 (Methods / Member Functions) :这类事物能执行哪些动作?这些就是类的"方法",用函数来表示。

    • 比如 Car 类能 startEngine() (启动引擎)、 accelerate() (加速)、 displayInfo() (显示信息)。
    • 这些方法通常被设为 public (公有) ,意味着它们是提供给外界使用的"按钮"或"接口"。你想让车加速,就去调用 accelerate() 这个方法,而不是直接去修改 speed 属性。

语法结构:

js 复制代码
class ClassName 
{
private:
    // 私有属性 (数据)
    // ...

public:
    // 公有方法 (行为)
    // ...
}; // <-- 千万别忘了这个分号!

封装 (Encapsulation) :将数据(属性)和操作数据的方法(方法)捆绑在一起,并对外部隐藏数据的实现细节,只暴露必要的接口。这就是我们把属性设为 private ,方法设为 public 的核心思想。

第二步:代码示例------从蓝图到实体车

我们来创建一个 Car 类,并用它造出两辆具体的车。包含品牌,颜色,速度

js 复制代码
#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std; 

// 1. 设计 Car 类的蓝图
class Car
{
// 数据成员通常放在 private区域,进行保护
private:
    string brand;//品牌 
    string color;//颜色
    int speed;//速度 
// 操作数据的函数放在 public 区域,供外部调用
public:
    // 构造函数:一个特殊的方法,在创建对象时自动调用,用于初始化属性
    Car(string b,string c)
    {
        brand = b;
        color = c;
        speed = 0;// 新车速度默认为0
        cout << "一辆" << color << "的" << brand << "制造出来了" << endl;	
    } 
    // 加速方法 
    void accelerate(int increment)
    {
        speed +=increment;
        cout << brand << "加速了" << increment << "km/h,当前速度:" << speed << "km/h" << endl; 
    }
	// 显示信息 
    void displayInfo()
    {
        cout << "这是一辆" << color << "的" << brand << "当前时速为" << speed << "km/h"<< endl; 
    }
};

int main(int argc, char** argv) 
{
    // 2. 使用 Car 蓝图来创建具体的 Car 对象
    // 创建第1个Car对象 myCar 并传入初始值 "奔驰" 和 "黑色"
    Car myCar("奔驰","黑色");
    myCar.accelerate(60); 
    myCar.displayInfo();
	
    cout << endl;// 加个空行,看得更清楚
	
    // 创建第2个Car对象 yourCar 并传入初始值 "宝马" 和 "红色"
    Car yourCar("宝马","红色");
    yourCar.accelerate(50);
    yourCar.displayInfo();
	
    return 0;
}
相关推荐
旺仔不是程序员2 分钟前
判断存在用 LIMIT 1:PostgreSQL 五种 count 计数方式与 NULL 语义
数据库·后端·sql
旺仔不是程序员4 分钟前
IN 操作规范:PostgreSQL 元素数量、EXISTS 替代与 = ANY 写法
数据库·后端·sql
晚安日记wanna12 分钟前
一条 SMEMBERS 干瘫 Redis 节点:单线程的真正边界在哪
redis·后端·面试
码事漫谈12 分钟前
32 位事务号的宿命:金仓 V9 如何用 64 位 XID 破解 PG 三十年顽疾
后端
码事漫谈13 分钟前
在 Kubernetes 上管好数据库:金仓 KES-Operator 正式落地
前端·后端
小蒜学长18 分钟前
基于SpringBoot+Vue的游戏论坛系统的设计与实现(代码+数据库+LW)
java·后端·springboot·游戏论坛系统·社区生态
SimonKing24 分钟前
文档杂乱怎么查找:用 Papra 搭一个极简文档管理系统
java·后端·程序员
掘金者阿豪27 分钟前
金仓、MySQL、PostgreSQL 用什么管理工具?DBeaver、Navicat、KStudio 我都试了一遍
后端
码匠许师傅32 分钟前
【C++三方组件】RE2:工业级正则的安全与性能
c++
雨辰AI32 分钟前
多租户数据库资源配额管控|避免租户资源抢占雪崩(金仓 / 达梦 / 高斯 /openGauss 全库原生适配)
java·大数据·数据库·后端