gpt4 book ai didi

c++ - 这段代码是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:57 26 4
gpt4 key购买 nike

我有一段奇怪的代码。我一定是闭着眼睛敲键盘,因为这种事情真的很蠢,但奇怪的是,我在程序成功运行后发现了它。

struct Number{
private:
unsigned long longNumber;
public:

Number(unsigned long n)
{
longNumber = n;
}

unsigned long getReverse()
{
/*some magic that returns an unsigned long */
}

inline
unsigned long getLong()
{
return longNumber;
}
inline
static Number add(Number one, Number two)
{
return Number(one.getLong() + two.getLong());
}
};


int main()
{
scanf("%lu", n);
Number number = Number(n);
number = Number::add(number, number.getReverse());
return 0;
}

当然 main() 中还有更多内容,Number 的成员和函数也很少,但我认为这才是重要的。

如果查看 main,您会看到向 add() 传递了一个数字和一个无符号长整数,但 add() 只接受数字和数字。

这是怎么回事?

编辑:在上面添加了构造函数

最佳答案

由于 Number 有一个接受 unsigned long 的构造函数,编译器根据 的返回值创建一个 Number 类型的临时对象>number.getReverse() 并将其传递给 add 函数。如果您不希望发生这种隐式转换,则需要将 Number 构造函数声明为 explicit

关于c++ - 这段代码是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5576517/

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