gpt4 book ai didi

c++ - 在 Polynom 类中重载 += 运算符以添加 Polynom 和常量

转载 作者:行者123 更新时间:2023-11-28 00:52:24 24 4
gpt4 key购买 nike

我正在尝试以某种方式为我的模板 Polynom 类重载 += 运算符,这样我就可以同时使用 Polynom 和常量作为参数。

我在我的类中编写了一个构造函数和以下运算符:

Polynom(const T& num = 0) {
coefs.push_back(num);
}
friend Polynom& operator += (Polynom& lhs, const Polynom& rhs) {
...
}

它工作正常,我可以使用:poly += 1;。当编译器遇到类似的情况时它会做什么?它看到没有使用这些参数的 += 运算符:

(Polynom<int>& lhs, const int)

但是有一个用于:

(Polynom<int>& lhs, const Polynom& rhs)

所以,它尝试将 const int 转换为 const Polynom&?它为此使用构造函数,对吗?但是为什么这个声明在添加常量时不起作用:

Polynom& operator += (Polynom& rhs) {
...
}

编译器说“不匹配运算符 +=”。

最佳答案

当将 int 传递给采用 const Polynom& 的函数时,编译器能够从 构造一个临时的 Polynom 对象>int 然后绑定(bind)到 const Polynom& 参数。但是,Polynom& 参数不会发生这种情况,因为临时变量不能绑定(bind)到非常量引用。

关于c++ - 在 Polynom 类中重载 += 运算符以添加 Polynom 和常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405777/

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