gpt4 book ai didi

c++ - 该类有多少个构造函数?

转载 作者:IT老高 更新时间:2023-10-28 13:23:13 29 4
gpt4 key购买 nike

我正在为即将到来的 C++ 考试做准备,遇到了这个关于类和构造函数的问题:

How many constructors does the class Fraction have?"

class Fraction {
//...
public:
Fraction(int numerator = 0, int denominator = 1);
//...
};

我以为只有一个,但他们建议有三个:

Fraction();
Fraction(n);
Fraction(n, d);

或者换句话说:
具有默认值的函数是重载函数吗?

最佳答案

贴出的声明对应的构造函数只有一个,不是三个重载。

电话

Fraction();
Fraction(n);

等价于:

Fraction(0, 1);
Fraction(n, 1);

另一种说服自己声明对应的构造函数只有一个的方法是,你只需要定义一个构造函数,而不是三个。

C++11 标准中关于默认参数的部分是这样的:

8.3.6 Default arguments

1 If an initializer-clause is specified in a parameter-declaration this initializer-clause is used as a default argument. Default arguments will be used in calls where trailing arguments are missing.

2 [ Example: the declaration

void point(int = 3, int = 4);

declares a function that can be called with zero, one, or two arguments of\ type int. It can be called in any of these ways:

point(1,2); point(1); point();

The last two calls are equivalent to point(1,4) and point(3,4), respectively. —end example ]

现在是主要问题。

How many constructors does the class Fraction have?

如果提出问题的人想要在构造函数集中包含移动构造函数和复制构造函数,除非明确删除,否则编译器会隐式生成它们,那么答案是三个 .在这种情况下,这个问题是一个技巧问题。

关于c++ - 该类有多少个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37846565/

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