已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;, 下列关于这个函数的叙述中,错误的是【 B 】 A. 这是运算符-的重载运算符函数 B. 这个函数所重载的运算符是一个一元运算符 C. 这是一个成员函数
时间: 2024-04-21 07:26:35 浏览: 156
答案是 B。
这个函数所重载的运算符是一个二元运算符,即减法运算符"-"。这是因为函数原型中定义了一个参数,即const修饰的Volume类型的对象,表示运算符的右操作数。因此,这个函数是一个二元运算符的重载运算符函数。
A. 这是运算符-的重载运算符函数,是正确的。
B. 这个函数所重载的运算符是一个二元运算符,不是一个一元运算符,因此这个叙述是错误的。
C. 这不是一个成员函数,因为函数原型中没有指定函数所属的类。虽然函数原型中使用了const修饰符,但是它只是表示函数不会修改对象的数据成员,而不是成员函数。这个函数可以定义为类的成员函数,也可以定义为类的友元函数。
相关问题
VOLUME operator -(VOLUME) const;
这是一个重载了减号运算符的成员函数,返回类型为 VOLUME。该函数的参数是一个 VOLUME 对象,表示要减去的量。函数的作用是将当前的 VOLUME 对象减去参数中的 VOLUME 对象,并返回新的 VOLUME 对象作为结果。在实现该函数时,可以通过调用成员函数或访问成员变量来完成减法运算。需要注意的是,该函数是 const 成员函数,表示它不会修改当前对象的状态。
class C { friend C operator+ (const C&, const C&); /* …… / }; C C::operator+ (const C& c1, const C& c2) { / …… */ }的错误
这段代码有两处错误:
1. `operator+` 函数是一个友元函数,不属于类 `C`,因此不能使用类作用域运算符 `::` 来定义该函数。应该在类外定义该函数。
2. 在类中声明 `operator+` 函数时,应该声明函数原型,而不是定义函数。因此应该将函数体中的代码移到函数原型之后的花括号中去。
下面是正确的代码示例:
```cpp
class C {
friend C operator+(const C&, const C&);
};
C operator+(const C& c1, const C& c2) {
C result;
// 对 c1 和 c2 进行加法运算,并将结果存储在 result 中
return result;
}
```
这样就可以在类外定义 `operator+` 函数,并在类中声明该函数的友元关系了。注意,由于 `operator+` 是一个友元函数,因此不需要将 `C` 类型的对象作为第一个参数传递给该函数。
阅读全文