构造函数是C++中一种特殊的成员函数,它在创建类对象时自动调用,用于初始化对象的数据成员。构造函数参数允许我们在创建对象时传递初始化值。
原因:类职责过多,违反单一职责原则
解决方案:
原因:单参数构造函数可能导致意外的类型转换
解决方案:使用explicit
关键字
class String {
public:
explicit String(int size) { /*...*/ }
};
原因:派生类需要正确初始化基类
解决方案:使用成员初始化列表
class Derived : public Base {
public:
Derived(int x, int y) : Base(x), y_(y) {}
private:
int y_;
};
原因:初始化失败
解决方案:
std::optional
或智能指针#include <iostream>
#include <string>
#include <memory>
class Employee {
public:
// 带默认参数的构造函数
Employee(std::string name, int age = 30, double salary = 5000.0)
: name_(std::move(name)), age_(age), salary_(salary) {
std::cout << "Employee " << name_ << " created\n";
}
// 委托构造函数
Employee() : Employee("Unknown") {}
void print() const {
std::cout << name_ << ", " << age_ << ", " << salary_ << "\n";
}
private:
std::string name_;
int age_;
double salary_;
};
int main() {
Employee emp1("John Doe", 35, 7500.0);
Employee emp2("Jane Smith", 28); // 使用默认salary
Employee emp3; // 使用所有默认值
emp1.print();
emp2.print();
emp3.print();
return 0;
}
这个示例展示了带默认参数的构造函数、委托构造函数以及对象初始化的多种方式。
没有搜到相关的文章