在C++中,类是一种用户自定义的数据类型,它将数据和操作数据的函数封装在一起,是面向对象编程的基础载体。通过类可以创建具有相同属性和行为的对象,实现代码的模块化和复用。

C++类的基本定义语法
定义一个类需要使用class关键字,后面跟上类名和类体,类体用花括号包裹,最后以分号结束。类体中可以包含成员变量和成员函数,默认情况下类体内的成员是私有的,外部无法直接访问。
// 定义一个简单的Person类
class Person {
private:
// 成员变量,存储姓名和年龄
string name;
int age;
public:
// 成员函数,设置姓名
void setName(string n) {
name = n;
}
// 成员函数,设置年龄
void setAge(int a) {
age = a;
}
// 成员函数,打印个人信息
void printInfo() {
cout << "姓名:" << name << ",年龄:" << age << endl;
}
};
类的访问权限说明
类中的成员可以通过访问修饰符控制访问权限,常用的访问修饰符有三种:
- private:私有成员,只能在类内部访问,外部无法直接调用或修改
- public:公有成员,外部可以直接访问,通常用来暴露类的对外接口
- protected:保护成员,在类内部和派生类中可以访问,外部无法直接访问
构造函数与析构函数
构造函数是在创建对象时自动调用的特殊成员函数,用来初始化对象的成员变量,它的名称与类名相同,没有返回值。析构函数则是在对象销毁时自动调用的函数,用来释放对象占用的资源,名称是在类名前加~,同样没有返回值。
class Person {
private:
string name;
int age;
public:
// 默认构造函数,无参数
Person() {
name = "未知";
age = 0;
cout << "默认构造函数被调用" << endl;
}
// 带参数的构造函数,用来初始化成员变量
Person(string n, int a) {
name = n;
age = a;
cout << "带参数构造函数被调用" << endl;
}
// 析构函数
~Person() {
cout << "析构函数被调用,对象" << name << "被销毁" << endl;
}
void printInfo() {
cout << "姓名:" << name << ",年龄:" << age << endl;
}
};
类的实例化与使用
定义好类之后,就可以通过类来创建对象,这个过程叫做类的实例化。实例化对象之后可以调用对象的公有成员函数来操作对象的数据。
#include <iostream>
#include <string>
using namespace std;
// 此处插入上面定义的Person类代码
int main() {
// 使用默认构造函数创建对象
Person p1;
p1.printInfo();
// 使用带参数构造函数创建对象
Person p2("张三", 20);
p2.printInfo();
// 修改对象属性(通过公有成员函数)
p1.setName("李四");
p1.setAge(18);
p1.printInfo();
return 0;
}
类定义的常见注意事项
- 类名通常遵循大驼峰命名法,首字母大写,多个单词首字母都大写
- 成员变量的命名可以在前面加
m_前缀,用来区分成员变量和局部变量,比如m_name - 如果类中有指针类型的成员变量,需要自定义拷贝构造函数和赋值运算符,避免浅拷贝带来的问题
- 成员函数的定义可以放在类体内部,也可以放在类体外部,放在外部时需要使用
类名::成员函数名的格式来定义
// 成员函数定义在类外部的示例
class Person {
private:
string m_name;
int m_age;
public:
Person(string n, int a);
void printInfo();
};
// 类外部定义构造函数
Person::Person(string n, int a) {
m_name = n;
m_age = a;
}
// 类外部定义成员函数
void Person::printInfo() {
cout << "姓名:" << m_name << ",年龄:" << m_age << endl;
}