gpt4 book ai didi

c++ - 可以选择接受参数的默认构造函数?

转载 作者:行者123 更新时间:2023-11-28 03:35:51 26 4
gpt4 key购买 nike

如果没有传入参数,是否可以让 1 个构造函数选择成为默认构造函数。

例如,不是有 2 个构造函数,其中 1 个是默认构造函数,另一个是初始化传入的数字的构造函数,是否可以只有 1 个构造函数,如果传入一个值,则将该值设置为一个成员函数,如果没有传入值,则将成员函数设置为一个数字。

例子:

WEIGHT.H文件:

   class Weight
{
public:
Weight() { size = 0; }
Weight(int a) : size(a) {}

int size;
};

MAIN.CPP 文件:

int main(void)
{
Weight w1;
Weight w2(100);
}

我一直致力于不同的学校项目,它们都需要不同类型的构造函数,我想知道是否有一种方法可以只使用一次以节省时间。谢谢您的帮助。

最佳答案

是的,构造函数参数可以有一个默认参数,就像其他函数一样。如果构造函数的所有参数都有默认参数,则构造函数也是默认构造函数。所以,例如,

class Weight
{
public:

explicit Weight(int a = 0) : size(a) { }

int size;
};

此构造函数可以使用单个参数或不使用参数调用;如果调用时不带参数,则 0 用作 a 参数的参数。

请注意,我还声明了此构造函数explicit。如果您有一个可以用单个参数调用的构造函数,您应该始终将其声明为 explicit 以防止发生不需要的隐式转换,除非您确实希望该构造函数成为转换构造函数。

(如果您还不熟悉转换构造函数或隐式转换,没关系;对于您将要编写的大部分代码来说,仅遵循此规则就足够了。)

关于c++ - 可以选择接受参数的默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10890433/

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