面向对象作业——类的应用

面向对象作业(一)

作业要求:完成两个程序,分别实现两个类及类的基本操作(请根据实际需要设计类的成员)。
一、创建矩形Rectangle类,有保护的int类型的成员变量r_long长和r_width宽;无参数的构造函数和有参数(参数没有默认值)的构造函数;其他成员函数comp_area()计算并返回矩形的面积,成员函数comp_perimeter()计算并返回矩形的周长,成员函数get_long()返回矩形的长;成员函数get_width()返回矩形的宽。
主函数要求:
1.无参构造矩形对象A
2.输入整数a、b,通过a、b构造矩形对象B
3.输出A的长、宽
4.输出B的长、宽
5.输出A的面积
6.输出B的周长

二、创建球Ball类,有保护的double型成员radius,其他成员请根据主程序要求自行设计,主程序要求:
输入半径、构造球类对象A;
1.输出A球的表面积、体积
2.拷贝构造新的球类对象B;
3.B半径扩大一倍;
4.输出B球的表面积、体积;

作业提交说明:
1.直接在输入框提交本次作业,不要上传其他文件
2.提交的内容应至少包含以下几个部分:
a.程序代码截图(在编译器中)
b.程序运行截图
c.程序的说明,针对核心代码的解释说明、结果的说明

一、
代码如下:

#include <iostream>
using namespace std;
class Rectangle{    //创建类 Rectangle

	private:
    	int r_long,r_width;
	public:
		
    	Rectangle(){   //无参构造函数 
        r_long=20; r_width=10;   //默认矩形长为20   宽为10 
    }
    
    Rectangle(int l,int w){	//含参构造函数 
        r_long=l;
        r_width=w;
    }
    
    int comp_area(){	//面积 
        return r_long*r_width;
    }
    
    int comp_perimeter(){	//周长 
        return 2*(r_long+r_width);
    }
    
    int get_long(){		//矩形长 
        return r_long;
    }
    
    int get_width(){	//矩形宽 
        return r_width;
    }
};
int main()
{
   int a, b;
   cout<<"请输入矩形的长宽a,b:";
   cin >> a >> b;
   Rectangle A, B(a, b); 
   cout << "A的长:" << A.get_long() << "\t" <<"A的宽:" << A.get_width() << endl;
   cout << "B的长:" << B.get_long() << "\t" <<"B的宽:" << B.get_width() << endl;
   cout << "A的面积:"<< A.comp_area() << endl;
   cout << "B的周长:"<< B.comp_perimeter() << endl;
}

运行截图:
在这里插入图片描述

Rectangle(){   //无参构造函数 
    r_long=20; r_width=10;   //默认矩形长为20   宽为10 
}    

此题的无参构造函数需设置初始值,即矩形的长和宽,通过其他的成员函数实现题中所需的各项功能

二、

#include <iostream>
using namespace std;
const  float  PI  = 3.14159;	//定义常量 PI
class Ball{		//声明类Ball 
	private:
		double raduis;
	public:
		Ball (double r){	//声明含参构造函数 
			raduis=r;
		}
		Ball (Ball &p);		//拷贝构造函数 
		
		double S(){			//返回球表面积 
			return 4*PI*raduis;
		}
		double V(){			//返回球体积 
			return (4*1.0/3)*PI*raduis*raduis*raduis;
		}
};
Ball::Ball(Ball &p){	// 拷贝构造函数实现  将半径扩大一倍 
		raduis=2*p.raduis;
} 
int main(){
	
		double r;
		cout<<"请输入球的半径:";
		cin>>r;
		Ball A(r);
		Ball B(A);			//拷贝构造函数的调用 
		cout<<"A球表面积:"<< A.S() <<" "<<"A球体积:"<< A.V() <<endl;
		cout<<"B球表面积:"<< B.S() <<" "<<"B球体积:"<< B.V() <<endl;
}

运行截图:
在这里插入图片描述
本题的核心是使用拷贝构造函数将半径变为原来的二倍:
Ball (Ball &p); // 此代码是声明一个拷贝构造函数
Ball::Ball(Ball &p){ // 拷贝构造函数的实现 将半径扩大一倍
raduis=2*p.raduis;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白吧啦吧啦

小白白,您的打赏是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值