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;
};

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

相关推荐
湫ccc31 分钟前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe1 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin1 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
Ysjt | 深2 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
ephemerals__2 小时前
【c++丨STL】list模拟实现(附源码)
开发语言·c++·list
码农飞飞2 小时前
深入理解Rust的模式匹配
开发语言·后端·rust·模式匹配·解构·结构体和枚举
一个小坑货2 小时前
Rust 的简介
开发语言·后端·rust
湫ccc2 小时前
《Python基础》之基本数据类型
开发语言·python