定一个正方形square,边长为私有,有构造函数,有个成员函数double area();还有个void copy(square s);
要求:
1:在main函数中,定义两个对象,s1(3),s2(5)
2:通过copy函数,把s2拷贝给s1,并打印s1前后的面积
3:在copy函数中使用this指针实现,并能判断是否是拷贝对象本身,如果是本身则直接返回,不进行拷贝动作。
4:area函数负责计算并输出面积
class square{
private:
float n;
public:
square(float a) {n = a;}
void copy(square &s)
{
if(this != &s)
{
n = s.GetN();
}
}
float GetN() {return n;}
float area() {return n*n;}
};
void main()
{
square s1(3),s2(5);
printf("拷贝前s1面积为:%.2f\n",s1.area());
s1.copy(s2);
printf("拷贝后s1面积为:%.2f\n",s1.area());
}
参考一下
#include<iostream>
using namespace std;
class square{
private:
float r,s;
public:
square(float r1=0){r=r1;}
float area(){
s=3*r*r;
return s;
}
friend double subarea(square &s1,square &s2){
return s1.area()-s2.area();
}
};
void main(){
square obj1(16);
square obj2(15);
cout<<subarea(obj1,obj2)<<endl;
}
如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
#include <iostream>
#include <string>
using namespace std;
class Square
{
protected :
int length;
public:
Square(int l)
{
length = l;
}
virtual int getperimeter()
{
int perimeter = 4 * length;
return perimeter;
}
virtual void showperimeter()
{
cout << "正方体的周长是" << getperimeter() << endl;
}
};
class Rectangle :public Square
{
private:
int width;
public:
Rectangle(int l,int w):Square(l), width(w)
{}
virtual int getperimeter()
{
int perimeter = length*width;
return perimeter;
}
virtual void showperimeter()
{
cout << "长方体的周长是" << getperimeter() << endl;
}
};
int main()
{
Square *s = new Square(4);
s->getperimeter();
s->showperimeter();
Rectangle* r = new Rectangle(4, 5);
r->getperimeter();
r->showperimeter();
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632