VOLUME operator -(VOLUME) const;
时间: 2024-05-23 07:15:51 浏览: 4
这是一个重载了减号运算符的成员函数,返回类型为 VOLUME。该函数的参数是一个 VOLUME 对象,表示要减去的量。函数的作用是将当前的 VOLUME 对象减去参数中的 VOLUME 对象,并返回新的 VOLUME 对象作为结果。在实现该函数时,可以通过调用成员函数或访问成员变量来完成减法运算。需要注意的是,该函数是 const 成员函数,表示它不会修改当前对象的状态。
相关问题
已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;, 下列关于这个函数的叙述中,错误的是【 B 】 A. 这是运算符-的重载运算符函数 B. 这个函数所重载的运算符是一个一元运算符 C. 这是一个成员函数
答案是 B。
这个函数所重载的运算符是一个二元运算符,即减法运算符"-"。这是因为函数原型中定义了一个参数,即const修饰的Volume类型的对象,表示运算符的右操作数。因此,这个函数是一个二元运算符的重载运算符函数。
A. 这是运算符-的重载运算符函数,是正确的。
B. 这个函数所重载的运算符是一个二元运算符,不是一个一元运算符,因此这个叙述是错误的。
C. 这不是一个成员函数,因为函数原型中没有指定函数所属的类。虽然函数原型中使用了const修饰符,但是它只是表示函数不会修改对象的数据成员,而不是成员函数。这个函数可以定义为类的成员函数,也可以定义为类的友元函数。
#include<iostream> #include<cmath> using namespace std; class Point{ protected: float x,y; public: Point(float a,float b); void setPoint(float,float); float getX(){return x;} float getY(){return y;} friend ostream& operator<<(ostream & ,const Point &); }; Point::Point(float a,float b){ x=a; y=b; } void Point::setPoint(float a,float b){ x=a; y=b; } ostream & operator<<(ostream &output ,const Point &p){ output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output; } //======================================== class Circle:public Point{ protected: float radius; public: Circle(float x=0,float y=0,float r=0);//构造函数 void setRadius(float); float getRadius() const; float Area() const; friend ostream &operator<<(ostream &,const Circle &); }; Circle::Circle(float x,float y,float r):Point(x,y),radius(r){} void Circle::setRadius(float r){radius=r;} float Circle::getRadius() const {return radius;} float Circle::Area() const {return 3.14*radius*radius;} ostream &operator<<(ostream &output,const Circle &c){ output<<"Center=["<<c.x<<","<<c.y<<"],r="<<c.radius<<",area="<<c.Area()<<endl; return output; } class Cylinder:public Circle{ protected: float height; public: Cylinder(float x=0,float y=0,float r=0,float h=0); void setHeight(float); float getHeight() const; float Area() const; float volume() const; friend ostream& operator<<(ostream & ,const Cylinder &); }; Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){} void Cylinder::setHeight(float h){height=h;} float Cylinder::getHeight() const {return height;} float Cylinder::Area() const {return 2*Circle::Area()+2*3.14*radius*height;} float Cylinder::volume() const {return Circle::Area()*height;} ostream& operator<<(ostream &output ,const Cylinder &cy) { output<<"Center=["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height<<"area"<<cy.Area()<<",volume"<<cy.volume()<<endl; return output; } int main(){ Cylinder cy1(3.5,6.4,5.2,10); cout<<"x="<<cy1.getX()<<",y="<<cy1.getY()<<",r="<<cy1.getRadius()<<",h="<<cy1.getHeight<<",area="<<cy1.Area()<<",volume="<<cy1.volume()<<endl; cy1.setHeight(15); cy1.setRadius(7.5); cy1.setPoint(5,5); cout<<"new"<<cy1;
你提供的代码存在一些问题。在调用 `cy1.getHeight` 和 `cy1.getHeight` 函数时,缺少了函数调用的括号。此外,在使用 `operator<<` 输出 `cy1` 时,缺少了分号。以下是修改后的代码:
```cpp
#include<iostream>
#include<cmath>
using namespace std;
class Point{
protected:
float x, y;
public:
Point(float a, float b);
void setPoint(float, float);
float getX() { return x; }
float getY() { return y; }
friend ostream& operator<<(ostream&, const Point&);
};
Point::Point(float a, float b){
x = a;
y = b;
}
void Point::setPoint(float a, float b){
x = a;
y = b;
}
ostream& operator<<(ostream& output, const Point& p){
output << "[" << p.x << "," << p.y << "]" << endl;
return output;
}
class Circle: public Point{
protected:
float radius;
public:
Circle(float x = 0, float y = 0, float r = 0);
void setRadius(float);
float getRadius() const;
float Area() const;
friend ostream& operator<<(ostream&, const Circle&);
};
Circle::Circle(float x, float y, float r): Point(x, y){
radius = r;
}
void Circle::setRadius(float r){
radius = r;
}
float Circle::getRadius() const {
return radius;
}
float Circle::Area() const {
return 3.14 * radius * radius;
}
ostream& operator<<(ostream& output, const Circle& c){
output << "Center=[" << c.x << "," << c.y << "], r=" << c.radius << ", area=" << c.Area() << endl;
return output;
}
class Cylinder: public Circle{
protected:
float height;
public:
Cylinder(float x = 0, float y = 0, float r = 0, float h = 0);
void setHeight(float);
float getHeight() const;
float Area() const;
float volume() const;
friend ostream& operator<<(ostream&, const Cylinder&);
};
Cylinder::Cylinder(float a, float b, float r, float h): Circle(a, b, r){
height = h;
}
void Cylinder::setHeight(float h){
height = h;
}
float Cylinder::getHeight() const {
return height;
}
float Cylinder::Area() const {
return 2 * Circle::Area() + 2 * 3.14 * radius * height;
}
float Cylinder::volume() const {
return Circle::Area() * height;
}
ostream& operator<<(ostream& output, const Cylinder& cy){
output << "Center=[" << cy.x << "," << cy.y << "], r=" << cy.radius << ", h=" << cy.height << ", area=" << cy.Area() << ", volume=" << cy.volume() << endl;
return output;
}
int main(){
Cylinder cy1(3.5, 6.4, 5.2, 10);
cout << "x=" << cy1.getX() << ", y=" << cy1.getY() << ", r=" << cy1.getRadius() << ", h=" << cy1.getHeight() << ", area=" << cy1.Area() << ", volume=" << cy1.volume() << endl;
cy1.setHeight(15);
cy1.setRadius(7.5);
cy1.setPoint(5, 5);
cout << "new " << cy1;
return 0;
}
```
在这个代码中,我们定义了三个类:Point、Circle 和 Cylinder。Point类表示一个点,Circle类表示一个圆,Cylinder类表示一个圆柱体。每个类都有相应的成员函数和友元函数用于操作和输出对象。在main函数中,创建了一个 Cylinder 对象 cy1,并输出其属性。然后修改 cy1 的属性,并再次输出。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)