gpt4 book ai didi

c++ - C++ 中的函数默认参数

转载 作者:太空狗 更新时间:2023-10-29 19:59:07 24 4
gpt4 key购买 nike

我在求职面试中被问到这个问题,即使在编译之后,我仍然不明白结果......

我有以下类(class):

class Point
{
public:
Point(double x = 0, double y = 0) { m_X = x; m_Y = y; }

double m_X, m_Y;
};

main.cpp 是:

int main()
{
double a = 1, r = 1, xCoord = 5, yCoord = 7;

Point p = (a+r*xCoord , a+r*yCoord);

cout<<"X = "<<p.m_X<<" Y = "<<p.m_Y<<endl;

return 0;
}

类 p 的数据成员正在获取值:

m_X = a+r*yCoord, m_Y = 0

现在,这是为什么?

最佳答案

因为逗号运算符和非显式构造函数。表达式 (a + r * xCoord , a + r * yCoord) 是逗号运算符的一个应用,其值为 a + r * yCoord,现在是-Point 构造函数的参数隐式形式与此值一起使用,第二个参数是默认值。

您可以通过使构造函数显式来防止此类错误的发生,这通常被推荐用于任何可以用一个参数调用的构造函数,除非您真的想要隐式转换。

要获得所需的行为,您需要直接初始化:

Point p(a + r * xCoord, a + r * yCoord);

关于c++ - C++ 中的函数默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15197282/

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