在C++11标准中,引入了委托构造函数的概念,允许一个构造函数调用同一个类的另一个构造函数来完成部分或全部的初始化工作。委托构造函数可以减少代码重复,并提高代码的可维护性。
在下面的示例代码中,简单介绍了如何利用委托构造函数来实现EventLoop类的构造函数:
#include <iostream>
#include <string>
class EventLoop {
private:
std::string message;
public:
// 委托构造函数,委托形参有字符串的构造函数进行构造
EventLoop() : EventLoop(std::string()) {
}
// 带字符串参数的构造函数
EventLoop(const std::string& msg) : message(msg) {
std::cout << "EventLoop constructed with message: " << message << std::endl;
}
};
int main() {
EventLoop event1("Hello, World!"); // 调用带字符串参数的构造函数
EventLoop event2; // 调用委托构造函数
return 0;
}
在上面的示例代码中,EventLoop类包含了两个构造函数,一个是带字符串参数的构造函数,另一个是委托构造函数,通过调用带参数的构造函数完成初始化工作。
- 当创建event1对象时,构造函数会调用带字符串参数的构造函数,传入"Hello, World!"来初始化message,并输出构造的信息。
- 当创建event2对象时,委托构造函数会被调用,它通过调用另一个构造函数并传入一个空字符串来完成对象的初始化。