c++ 定义类 介绍

在 C++ 中,定义类是创建自定义数据类型的基本方法。类可以包含数据成员(变量)和成员函数(方法),以及构造函数、析构函数等特殊成员函数。以下是定义类的一些基本要素和示例:

1. 类的基本结构

类的基本定义包括类名、访问修饰符(如 publicprotectedprivate),以及数据成员和成员函数的定义。

cpp 复制代码
class ClassName {
public:
    // 公有成员
    void publicMethod(); // 成员函数
    int publicData;      // 数据成员

protected:
    // 受保护的成员
    void protectedMethod();
    int protectedData;

private:
    // 私有成员
    void privateMethod();
    int privateData;
};

2. 数据成员和成员函数

  • 数据成员:用于存储类的状态或属性。可以是任何基本数据类型或自定义类型。
  • 成员函数:用于定义类的行为或操作数据成员的功能。
2.1 数据成员示例
cpp 复制代码
class Person {
public:
    std::string name; // 公有数据成员
    int age;
};
2.2 成员函数示例
cpp 复制代码
class Person {
public:
    void setName(const std::string& newName) {
        name = newName; // 修改数据成员
    }

    std::string getName() const {
        return name; // 访问数据成员
    }

private:
    std::string name;
    int age;
};

3. 构造函数和析构函数

  • 构造函数:用于初始化类的对象。构造函数在对象创建时自动调用。
cpp 复制代码
class Person {
public:
    Person(const std::string& newName, int newAge) : name(newName), age(newAge) {
        // 初始化数据成员
    }

private:
    std::string name;
    int age;
};
  • 析构函数:用于清理资源,通常在对象销毁时自动调用。
cpp 复制代码
class Person {
public:
    ~Person() {
        // 清理资源
    }
};

4. 成员函数的定义

成员函数可以在类定义内定义(内联),或在类外定义:

4.1 内联定义
cpp 复制代码
class Person {
public:
    void setName(const std::string& newName) {
        name = newName; // 成员函数实现
    }

private:
    std::string name;
};
4.2 外部定义
cpp 复制代码
class Person {
public:
    void setName(const std::string& newName);

private:
    std::string name;
};

// 成员函数的外部定义
void Person::setName(const std::string& newName) {
    name = newName;
}

5. 访问修饰符

  • public:公有成员,可以被任何函数访问。
  • protected:受保护成员,只能被该类及其派生类访问。
  • private:私有成员,只能被该类内部的函数访问。

6. 类的实例化

定义类之后,可以创建类的对象(实例):

cpp 复制代码
int main() {
    Person person;               // 创建对象
    person.setName("Alice");     // 调用成员函数
    std::cout << person.getName(); // 访问数据成员
    return 0;
}

7. 类的继承

类可以通过继承机制扩展现有类的功能:

cpp 复制代码
class Student : public Person {
public:
    void setStudentID(int id) { studentID = id; }

private:
    int studentID;
};

继承允许派生类继承基类的公有和受保护的成员,并可以重写基类的成员函数以实现多态。

相关推荐
为何创造硅基生物5 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好5 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
星寂樱易李5 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
仰泳之鹅5 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆6 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
于小猿Sup7 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y7 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
社交怪人7 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生8 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588