永发信息网

有关C++的一个问题

答案:1  悬赏:10  手机版
解决时间 2021-03-10 12:38
  • 提问者网友:绫月
  • 2021-03-10 02:27
有关C++的一个问题
最佳答案
  • 五星知识达人网友:胯下狙击手
  • 2021-03-10 02:54
如下代码实现:
#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的话,类的代码会更简单,如上代码中的注释部分。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯