有关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的话,类的代码会更简单,如上代码中的注释部分。
#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的话,类的代码会更简单,如上代码中的注释部分。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯