gpt4 book ai didi

c++ - 委托(delegate)给默认的 C++ 构造函数

转载 作者:行者123 更新时间:2023-12-05 01:31:04 28 4
gpt4 key购买 nike

假设一个 C++ 类 A 的成员都可以被各自的复制构造函数复制。我们可以依靠 A 的默认复制构造函数来复制其成员:

class A {
private:
A(const A&) = default; // We don't really need this line
int a;
B b;
double c;
}

但现在让我们假设我想“扩展”(或注释)A 的默认构造函数,以便在除了复制其成员之外,它还做一些其他事情,例如将一行写入日志文件。

即我想写这样的东西:

class A {
public:
A(const A& a) : A::default(A) {
print("Constructing A\n");
}
private:
// like before
}

不幸的是,这不是正确的 C++ 语法。

那么是否有一种语法允许在显式定义相同的构造函数的同时委托(delegate)给默认的 C++ 构造函数?

最佳答案

最简单的是将所有成员移动到一个基类中,然后在派生类中写入消息:

class A_helper {
private:
int a;
B b;
double c;
};
class A : public A_helper {
public:
A() = default;
A(const A& a) : A_helper(a) {
print("Constructing A\n");
}
A(A&& a) : A_helper(std::move(a)) {
print("Constructing A\n");
}
};

关于c++ - 委托(delegate)给默认的 C++ 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66525212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com