class Student {
public:
    int id;
    
    Student() { // 默认(无参)构造函数
        id = 0;
    }
    
    Student(int _id) { // 有参构造函数
        id = _id;
    }
    
    Student(const Student& s) { //拷贝构造函数
        id = s.id;
    }
}当然,也可以这么写,只是把赋值的过程挪到了上面:
class Student {
public:
    int id;
    Student() : id(0) { // 默认
        cout << "Student() : id(0)" << endl;
    }
    Student(int _id) : id(_id) { // 有参
        cout << "Student(int _id) : id(_id)" << endl;
    }
    Student(const Student& s) : id(s.id) { // 拷贝
        cout << "Student(const Student& s) : id(s.id)" << endl;
    }
};使用上述三种构造函数初始化对象的7种方法:
// 默认构造函数
Student s;
Student s = Student();
// 有参构造函数
Student s(1);
Student s = Student(1);
// 拷贝构造函数
Student s(s1);
Student s = Student(s1);
Student s = s1;