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

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

相关推荐
花菜会噎住3 分钟前
Vue3 路由配置和使用与讲解(超级详细)
开发语言·javascript·ecmascript·路由·router
细节控菜鸡6 分钟前
【2025最新】ArcGIS for JavaScript 快速实现热力图渲染
开发语言·javascript·arcgis
lingran__16 分钟前
算法沉淀第五天(Registration System 和 Obsession with Robots)
c++·算法
莱茶荼菜19 分钟前
一个坐标转换
c++·算法
guguhaohao40 分钟前
list,咕咕咕!
数据结构·c++·list
PingdiGuo_guo1 小时前
C++构造和折构函数详解,超详细!
开发语言·c++
来知晓1 小时前
语音处理:音频移形幻影,为何大振幅信号也无声
开发语言·音视频
啦啦9117141 小时前
提供一些准备Java八股文面试的建议
java·开发语言·面试
deng-c-f1 小时前
Linux C/C++ 学习日记(27):KCP协议(三):源码分析与使用示例
linux·服务器·网络·c++·网络编程·kcp
湫兮之风1 小时前
C++:彻底理解左值和右值(从概念到实践,基础版)
开发语言·c++