永发信息网

有关C++的一个问题

答案:1  悬赏:10  手机版
解决时间 2021-03-10 12:38
有关C++的一个问题
最佳答案
如下代码实现:
#include 
#include 
using std::string;

class Mouse;

class Cat
{
friend void showN(Cat &obj1, Mouse&obj2);
public:
Cat(const char * strname, int iage, double dWe) :
age(iage), weight(dWe)
{
int ileg = strlen(strname);

name = new char[ileg + 1];
memset(name, 0, ileg + 1);
memcpy(name, strname, ileg + 1);
}
~Cat()
{
delete name;
name = nullptr;
}
private:
char*name;
int age;
double weight;
};

class Mouse
{
friend void showN(Cat &obj1, Mouse&obj2);
public:
Mouse(const char * strname, int iage, double dWe) :
age(iage), weight(dWe)
{
int ileg = strlen(strname);

name = new char[ileg + 1];
memset(name, 0, ileg + 1);
memcpy(name, strname, ileg + 1);
}
~Mouse()
{
delete name;
name = nullptr;
}
private:
char*name;
int age;
double weight;
};


// class Cat
// {
//  friend void showN(Cat &obj1, Mouse&obj2);
// public:
//  Cat(const string& strname, int iage, double dWe) :
//  name(strname), age(iage), weight(dWe)
//  {
//  }
// 
// private:
//  string name;
//  int age;
//  double weight;
// };
// 
// class Mouse
// {
//  friend void showN(Cat &obj1, Mouse&obj2);
// public:
//  Mouse(const string& strname, int iage, double dWe) :
//  name(strname),age(iage), weight(dWe)
//  {
//  }
// 
// private:
//  string name;
//  int age;
//  double weight;
// };

void showN(Cat &obj1, Mouse&obj2)
{
std::cout << "该猫名字:" << obj1.name << ", 年龄:" << obj1.age << "岁, 体重:" << obj1.weight << " kg。
";
std::cout << "该老鼠名字:" << obj2.name << ", 年龄:" << obj2.age << "岁, 体重:" << obj2.weight << " kg。
";
}

int main()
{
Cat cat1("mimi", 9, 33.0);
Mouse mo2("zhizhi", 3, 7.9);
showN(cat1, mo2);
}

如果可以不限制name为char*,而改用 std::string的话,类的代码会更简单,如上代码中的注释部分。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
刘晓庆主演的《京城四少》主题歌是什么
蠢货电影 1,2,3的下载地址
临淄区城市管理服务中心地址在哪,我要去那里
患者,男,7岁。因发热、头痛、呕吐4天,烦躁
商场停车场保安想讹人!求助!商场名我不说了
最新版大众点评app的霸王餐在哪里,怎么找不
云南有哪些古建筑呀???
文言文中尝如果翻译成曾经是读ceng吗
《窃读记》讲了一件什么事?
百度文库如何换账号
路旁有一种闪光的摄像头一闪一闪的是做什么的
古典艺术的简介
宏润装饰广告在什么地方啊,我要过去处理事情
?? peggy这个英文名的含义和来历是什么,谁知
空调为什么总是显示室内温度32呢?
推荐资讯
小米手机怎么买流量
谁能帮我想几个二字网名,要特别的,不能是贬
乌丸大路喜欢天满吗?
数独怎么做视频
请问单词pity的音标 [ˈpɪti] 中ɪ和i哪个是
我是一个对电脑一窍不通的人,要如何做到高手
呼伦贝尔市尖峰商贸有限公司在哪里啊,我有事
《庄子》的全篇字数一共有多少
在工作单位值班时间猝死,认定工伤一定要尸检
i32330m和g1840那个好
征集 <<我和爷爷的故事>>
中国人寿保险股份有限公司云县支公司地址在什
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?