类是C++中的核心编程概念,用于封装数据(成员变量)和操作数据的方法(成员函数),是面向对象编程的基础

类的基本结构

class ClassName {
private:
    // 私有成员(仅在类内访问)
    
public:
    // 公有成员(类外可访问)
    
protected:
    // 受保护成员(派生类可访问)
};

类的组成要素

  • 成员变量(属性):描述对象的特征
  • 成员函数(方法):定义对象的行为
  • 访问修饰符
    • private:仅类内部可见
    • protect:类内部及派生类可见
    • public:可被外部访问

类的特性

  1. 封装

    • 将数据和方法捆绑在一起,隐藏内部实现细节
    • 通过private保护数据,提供公共接口(如Getter/Setter
  2. 构造函数和析构函数

    • 构造函数:初始化对象
    • 析构函数:对象销毁时自动调用
  3. this指针

    • 指向当前对象的指针,用于区分成员变量和局部变量
    void setName(string name) { this->name = name; }
    
  4. 静态成员

    • 静态成员变量:所有对象共享同一数据
    static int count; // 在类外初始化:int Student::count = 0;
    
    • 静态成员函数:属于类而非对象,只能访问静态成员变量
    static void getCount() { cout << count; }  // 只能访问静态成员变量
    
  5. 常成员与常对象

    • 常成员函数:不能修改对象状态(即成员变量),只能调用其它常成员函数
    string getName() const { return name; }  // 注意const的位置不是在前面
    
    • 常对象:只能访问常成员函数
    const Student stu("Bob", 22);  // 定义常对象的时候使用const限定符
    

实例代码

#include <iostream>
#include <string>

using namespace std;

class Student {
private:
	string name;
	int age;
	static int count;  // 定义静态成员变量,需要在类外初始化	

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

	~Student() {  // 析构函数,对象销毁时自动调用
		cout << "object destroyed" << endl;
	}

	void display() {
		cout << "name: " << name << ", age:" << age << endl;
	}

	static void getCount() {
		cout << "count: " << count << endl;
	}

	void setName(string name) {  // 参数名称与类的成员变量名称相同,使用this指针区别
		this->name = name;  // 如果传入的参数名称不是name,此处可以不适用this指针
	}

	string getName() {
		return name;
	}
};

int Student::count = 10;  // 类外初始化类的静态成员变量

int main() {
	Student stu("alice", 10);
	stu.display();
	Student::getCount();
	return 0;
}

继承

允许派生类继承基类的成员,实现代码复用

class Undergraduate : public Student {
private:
    string major;
public:
    Undergraduate(string n, int a, string m) : Student(n, a), major(m) {}
};

多态

通过虚函数实现运行时多态

class Animal {
public:
    virtual void speak() { cout << "Animal sound!" << endl; }
};

class Dog : public Animal {
public:
    void speak() override { cout << "Woof!" << endl; }
};

友元

允许非成员函数或其它类访问私有成员

class Teacher {
    friend void printTeacher(Teacher t); // 友元函数
};

运算符重载

class Complex {
public:
    Complex operator+(const Complex& other) {  // operator关键字加上要重载的运算符
        return Complex(real + other.real, imag + other.imag);
    }
};

总结

C++中的类是实现面向对象编程的基石,通过封装、继承和多态等特性,能够构建复杂且可维护的软件系统。掌握类的设计和使用是C++开发者的核心技能之一。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐