C++中类由class关键字定义,含私有数据成员和公有成员函数,构造函数名与类名相同、无返回类型,用成员初始化列表高效初始化;可重载、委托或设默认参数。

在C++中定义一个类,就是用 class 关键字声明一组相关数据(成员变量)和操作这些数据的函数(成员函数),其中构造函数用于初始化对象。
定义类的基本结构
类通常包含私有(private)数据成员和公有(public)成员函数。例如定义一个表示学生的类:
class Student {
private:
std::string name;
int age;
public:
Student(); // 默认构造函数
Student(std::string n, int a); // 带参构造函数
void display() const;
};
实现构造函数
构造函数名必须与类名完全相同,没有返回类型(连 void 也不能写)。它在创建对象时自动调用:
立即学习“C++免费学习笔记(深入)”;
Student::Student() : name("Unknown"), age(0) {}
Student::Student(std::string n, int a) : name(n), age(a) {}
- 使用成员初始化列表(冒号后部分)比在函数体内赋值更高效,尤其对自定义类型
- 如果没定义任何构造函数,编译器会提供默认构造函数;但一旦定义了,就不会再自动生成默认版本
- 可以重载多个构造函数,只要参数列表不同
创建和使用对象
定义类之后,就可以用它创建对象,并调用成员函数:
int main() {
Student s1; // 调用默认构造函数
Student s2("Alice", 20); // 调用带参构造函数
s2.display();
return 0;
}
- 对象在栈上创建时,构造函数立即执行
- 若通过 new 动态分配(如 Student* p = new Student("Bob", 22);),构造函数也在内存分配后立刻调用
- 成员函数需声明为 const(如 display() const)才能被 const 对象调用
补充:默认参数与委托构造(C++11起)
可简化构造函数数量:
Student::Student(std::string n = "Unknown", int a = 0) : name(n), age(a) {}
或用委托构造避免重复代码:
Student::Student() : Student("Unknown", 0) {}
Student::Student(std::string n, int a) : name(n), age(a) {}
- 委托构造中,冒号后只能调用本类的另一个构造函数,且不能同时使用成员初始化列表
- 被委托的构造函数先执行,再继续当前构造函数的函数体(如果有)









