⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

C++ 类

学习class · 难度:进阶 · +15XP

C++ 类与对象

类(class)是 C++ 面向对象编程的核心。类是一种用户自定义的数据类型,它将数据(属性)操作数据的函数(方法)封装在一起。通过类创建的对象可以模拟现实世界中的实体,让程序的结构更加清晰、自然。C++ 的类同时支持栈上分配和堆上分配,给予开发者极大的灵活性。

类的定义与实例化

类的定义使用 class 关键字,默认情况下成员是 private 的(与 struct 相反)。通常将属性设为私有,通过公共方法(getter/setter)访问,这是封装的核心思想。

#include <iostream>
#include <string>
using namespace std;

class Student { private: string name; int age; double score;

public: // 构造函数 Student(string n, int a, double s) : name(n), age(a), score(s) {}

// 成员函数(方法) void display() { cout << "姓名: " << name << ", 年龄: " << age << ", 分数: " << score << endl; }

// Getter/Setter string getName() const { return name; } void setScore(double s) { score = s; } double getScore() const { return score; } };

int main() { // 栈上创建对象 Student s1("张三", 18, 92.5); s1.display();

// 堆上创建对象 Student* s2 = new Student("李四", 20, 88.0); s2->display(); // 指针用 -> 访问成员 delete s2; // 手动释放内存

return 0; }

构造函数与析构函数

函数类型调用时机用途
默认构造函数创建对象时(无参数)初始化成员为默认值
带参数构造函数创建对象并传入参数用指定值初始化成员
拷贝构造函数用一个对象初始化另一个深拷贝 / 浅拷贝控制
析构函数对象生命周期结束时释放资源(内存、文件句柄等)
移动构造函数C++11,从临时对象转移资源避免不必要的拷贝,提升性能
class MyArray {
private:
    int* data;
    int size;
public:
    // 构造函数
    MyArray(int s) : size(s) {
        data = new int[size];
        cout << "分配 " << size << " 个整数空间" << endl;
    }

// 析构函数 ~MyArray() { delete[] data; cout << "释放内存" << endl; } };

this 指针与 const 成员函数

每个非静态成员函数都隐式包含一个 this 指针,指向调用该函数的对象。在成员函数末尾添加 const 关键字可以将该函数声明为常量成员函数,保证它不会修改任何成员变量的值。

  1. 定义一个 Rectangle 类,包含 width、height 属性,以及计算面积和周长的成员方法
  2. Rectangle 添加默认构造函数、带参数构造函数和拷贝构造函数
  3. 创建 BankAccount 类,包含余额、账号属性,实现存款、取款方法(取款需检查余额)
  4. BankAccount 中添加静态成员变量 totalAccounts,统计一共创建了多少个账户
  5. 使用初始化列表语法重写所有构造函数,对比初始化列表与构造函数体内赋值的区别
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 105 篇
0 完成
🔥 0