gpt4 book ai didi

c++ - 如何在列表初始化中添加额外的语句?

转载 作者:行者123 更新时间:2023-12-01 22:09:07 25 4
gpt4 key购买 nike

假设我有一个带有构造函数的类,如下所示:

MClass(const char *t_source);

事实上,有很多地方可以从文件中获取 t_source ,因此我正在考虑创建另一个构造函数,它采用 FILE 指针,并将大部分内容放入其中的样板。同时,现有的构造函数本身也有很多用途,并且包含我不想在代码中重复多次的逻辑。我正在考虑委托(delegate)构造函数,但看不出如何利用此功能,因为我需要多个语句来从 FILE 实例中提取数据(例如分配一个 char 数组并从FILE 并随后删除)。所以本质上我想做这样的事情:

MClass(FILE *t_file) : MClass(MNameSpace::readFile(t_file)) {}

但有一些初步和通话后的行动。有什么想法吗?

最佳答案

我发现您的情况可以通过命名构造函数习惯用法更好地解决。我不会尝试将复杂性归入构造函数上下文提供的有限空间中,而是简单地添加一个新的命名函数。

class MClass {
// ...
public:
static MClass fromFile(FILE *t_file);
};

MClass MClass::fromFile(FILE *t_file) {
// Preparation
MClass retVal(...);
// Post actions
return retVal;
}

简单,容易理解,做你想做的事。当人们看到它时,它也很好地传达了意义

MClass obj = MClass::fromFile(...);

首先,命名返回值优化(标准化)将避免使用命名函数产生任何额外的拷贝。最终结果将是直接初始化 obj 的单个构造函数调用。

关于c++ - 如何在列表初始化中添加额外的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59064488/

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