定一个正方形square,边长为私有,有构造函数

定一个正方形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