Open freelsn opened 1 year ago
类的构造与析构
class Student {
public:
Student();
explicit Student(uint32_t id);
Student(uint32_t id, uint32_t age);
Student(char id) = delete;
void setId(uint32_t id) { m_id = id; }
uint32_t getId() { return m_id; }
private:
uint32_t m_id = 0;
uint32_t m_age;
}
Student::Student(uint32_t id, uint32_t age)
: m_id(id), m_age(age) {}
Student::Student(): Student(0, 18) {} // 委托
Student::Student(uint32_t id): Student(id, 18) {}
void foo(Student stud) {}
int main()
{
Student stud1;
Student stud3(1);
Student stud4(1, 19);
uint32_t id = 4;
foo(id); // wrong
return 0;
}
foo(id);
默认会自动构造 Student 对象,但 explicit 阻止了这种操作
复制构造函数与移动构造函数
复制构造函数:
移动构造函数: