C++ 最胖的加菲(类与对象+数组)

题目描述
有一群猫猫,每只猫都有自己的名称和体重。 用类来描述猫,名称和体重都是私有属性,要求加入属性的get方法。其他函数根据需要自己定义
创建一个动态的猫对象数组,存储各只猫的名称和体重 根据猫的体重对数组做升序排序,并输出排序后每只猫的名称
题目涉及的数值均用整数处理
输入
第一行输入n表示有n只猫 第二行输入一只猫的名称和体重 依次输入n行 输出输出一行,输出排序后的猫的名称
样例输入
4
巧克力胖三斤 1500
自来水瘦八两 400
芝士蛋糕肥六斤 3000
蔬菜沙拉轻四两 200
样例输出
蔬菜沙拉轻四两
自来水瘦八两
巧克力胖三斤
芝士蛋糕肥六斤

#include<iostream>
#include<string.h>
using namespace std;

class cat{
	private:
		char *cat_name;
		int cat_weight;
	public:
		void Set(char *name,int weight){
			int len=strlen(name);
			cat_name=new char[len+1];
			strcpy(cat_name,name);
			cat_weight=weight;
		}
		void print(cat p){
			cout<<p.cat_name<<" ";
		}
		char * get_name(){
 			return cat_name;
 		}
		int get_weight(){
			return cat_weight;
		}
};

void compare(cat &p,cat &q){//这里使用必须引用!详情看下面解析
	cat temp;
	if(p.get_weight()>q.get_weight()){
	temp=p;
	p=q;
	q=temp;
	}
}

int main(){
	int n,i,weight,j;
	char name[100];
	cat *p;
	cin>>n;
	p=new cat[n];//创建猫猫类的动态数组
	for(i=0;i<n;i++){
		cin>>name>>weight;
		p[i].Set(name,weight);//依次存入数据
	}
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
			compare(p[i],p[j]);//冒泡升序法来对猫咪继续排序
	for(i=0;i<n;i++)
		p->print(p[i]);
	delete p;
}

引用

主函数外定义的交换函数里面的参数必须为引用参数,一般的参数是复制一个相同的值在函数中继续程序计算,不会改变原数据的值,但交换数组的两个元素则需要引用,不然无法改变主函数中两个数组元素的位置

由于外面的函数不能访问私有的数据成员,一般会在公有定义一个get成员函数来访问私有的数据成员,如

int get_weight(){
   return cat_weight;
  }
}

类里的 函数的参数问题

一开始我有一个疑问,我定义了一个猫咪类的数组,如何让函数知道我要的是具体哪只猫咪的体重呢?函数的参数应该写什么进去才可以获得相应的猫咪体重

但其实我们一般是先创建了一个类的数据如加菲jiafei,用jiafei调用get_weight函数的时候,电脑已经知道我们想要的是加菲这只猫的体重,所以不需要参数

cat jiafei;
.......(省略过程)
cout<<jiafei.get_weight();

在这里插入图片描述

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值