C++中的类
类是C++中的核心编程概念,用于封装数据(成员变量)和操作数据的方法(成员函数),是面向对象编程的基础
类的基本结构
class ClassName {
private:// 私有成员(仅在类内访问)public:// 公有成员(类外可访问)protected:// 受保护成员(派生类可访问)
};
类的组成要素
- 成员变量(属性):描述对象的特征
- 成员函数(方法):定义对象的行为
- 访问修饰符:
private
:仅类内部可见protect
:类内部及派生类可见public
:可被外部访问
类的特性
-
封装
- 将数据和方法捆绑在一起,隐藏内部实现细节
- 通过
private
保护数据,提供公共接口(如Getter/Setter
)
-
构造函数和析构函数
- 构造函数:初始化对象
- 析构函数:对象销毁时自动调用
-
this
指针- 指向当前对象的指针,用于区分成员变量和局部变量
void setName(string name) { this->name = name; }
-
静态成员
- 静态成员变量:所有对象共享同一数据
static int count; // 在类外初始化:int Student::count = 0;
- 静态成员函数:属于类而非对象,只能访问静态成员变量
static void getCount() { cout << count; } // 只能访问静态成员变量
-
常成员与常对象
- 常成员函数:不能修改对象状态(即成员变量),只能调用其它常成员函数
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++开发者的核心技能之一。