gpt4 book ai didi

c++ - 使用初始化列表重载默认构造

转载 作者:行者123 更新时间:2023-11-30 01:00:55 27 4
gpt4 key购买 nike

我需要知道如何让某些东西发挥作用。我有一个带有构造函数和一些在初始化列表中初始化的常量的类。我想要的是能够创建一个不同的构造函数,它接受一些额外的参数但仍然使用初始化列表。像这样:

class TestClass
{
const int cVal;
int newX;
TestClass(int x) : cVal(10)
{ newX = x + 1; }
TestClass(int i, int j) : TestClass(i)
{ newX += j; }
}

非常糟糕的例子,但它明白了要点。问题是,我如何让它发挥作用?

最佳答案

一个构造函数无法委托(delegate)给同一类的另一个构造函数。您可以将公共(public)代码重构为静态成员函数,但后者无法初始化字段,因此您必须在每个构造函数中重复字段初始化程序。如果特定字段初始值设定项具有计算值的复杂表达式,您可以将其重构为静态成员函数,以便它可以在所有构造函数中重用。

这是一个众所周知的不便,C++0x 中将提供一种委托(delegate)给另一个构造函数的方法。

关于c++ - 使用初始化列表重载默认构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1793577/

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