![]() |
#2
鸿蒙之灵2016-10-28 10:15
Father(int a,char na,char n) 这是你的构造函数,你注意一下你的参数列表顺序,
Father F("李",28,"汉"); 再来看看这个,是不是出现了参数顺序不一致而导致的截断的现象??? Father F("李",28,"汉"); Mother M("丽",24,"黎"); 回过头来再看这两句,你都在构造函数中定义了name和national是char类型数据,那你的参数列表是否有些问题?回忆一下char型数据和string型数据在初始化时,赋值的区别,即单引号和双引号的运用。 cout<<"妈妈的姓:"<<name<<"年龄 "<<age<<"民族" <<national<<endl; 这一句,你的代码中出现了 cout 和 endl ,为什么前面没有引用 std 命名空间? void main() 主函数的void类型编译虽然能够通过,但是在理论上这样的写法是错误的,建议养成良好的编程习惯 #include<iostream.h> 这个头文件的写法是否出现了错误(我的是VS 2005环境,可能有影响)因为它已经被 C/C++ 废弃,编译时会出现:无法打开iostream.h头文件 的报错信息,但是我写成这样可以:#include<iostream> 上面是最直观,无关逻辑的错误,下面是我在你的代码的基础上进行了修改,没有用继承,你自己试试用继承的方式再试试 ![]() #include "stdafx.h" #include<iostream> #include<stdlib.h> #include<string> using namespace std; class Father { private: int age;//爸爸的年龄 string national;//爸爸的民族 string name;//爸爸的姓氏 public: Father(){}; void set(string n,int a,string na)//Father的构造函数 { age=a; name=n; national=na; } string getname() { return name; } void showi()//father的成员函数,输出爸爸的信息 { cout<<"爸爸的姓: "<<name<<"年龄 "<<age<<"民族 "<<national<<endl; } }; class Mother { private: int age;//妈妈的年龄 string name;//妈妈的姓氏 string national;//妈妈的民族 public: Mother(){}; void set(string n,int a,string na)//Mather 构造函数 { name=n; age=a; national=na; } string getnational() { return national; } void showi()//Mother的成员函数,输出妈妈的信息 { cout<<"妈妈的姓:"<<name<<"年龄 "<<age<<"民族" <<national<<endl; } }; class Child/*:public Father,public Mother*///继承爸爸的姓,妈妈的民族 { private: int age;//孩子的年龄 string national;//孩子的民族 string name;//孩子的名字 public: Child(){}; void set(string n,int a,string na)//Child的构造函数 { name=n; national=na; age=a; }; void showi()//Child的成员函数,输出孩子的信息 { cout<<"孩子的姓:"<<name<<"年龄 "<<age<<"民族 "<<national<<endl; } }; int main() { Father F; F.set("李",28,"汉"); Mother M; M.set("丽",24,"黎"); Child C; C.set(F.getname(),15,M.getnational()); F. showi(); M. showi(); C. showi(); system("pause"); return 0; } 只有本站会员才能查看附件,请 登录 [此贴子已经被作者于2016-10-28 10:16编辑过] |
#include<iostream.h>
class Father
{
private:
int age;//爸爸的年龄
char national;//爸爸的民族
public:
char name;//爸爸的姓氏
public:
Father(int a,char na,char n)//Father的构造函数
{
age=a;
national=na;
name=n;
}
char get()
{
return name;
}
void showi()//father的成员函数,输出爸爸的信息
{
cout<<"爸爸的姓: "<<name<<"年龄 "<<age<<"民族 "<<national<<endl;
}
};
class Mother
{
private:
int age;//妈妈的年龄
char name;//妈妈的姓氏
public:
char national;//妈妈的民族
public:
Mother(char na,char n,int a)//Mather 构造函数
{
name=n;
age=a;
national=na;
}
char get()
{
return national;
}
void showi()//Mother的成员函数,输出妈妈的信息
{
cout<<"妈妈的姓:"<<name<<"年龄 "<<age<<"民族" <<national<<endl;
}
};
class Child:public Father,public Mother//继承爸爸的姓,妈妈的民族
{
public:
int age;//孩子的年龄
char national;//孩子的民族
char name;//孩子的名字
public:
Father a;
Mother b;
Child(char n,char na,int a):Father(a, na, n),Mother(na, n, a)//Child的构造函数
{
age=a; //小孩类继承的是爸爸类的姓,妈妈类的民族该怎么写?
name=n;
national=na; //才能然计算机知道?
}
void showi()//Child的成员函数,输出孩子的信息
{
cout<<"孩子的姓:"<<name<<"年龄 "<<age<<"民族 "<<national<<endl;
}
};
void main()
{
Father F("李",28,"汉");
Mother M("丽",24,"黎");
Child C(F.get(),15,M.get());
F. showi();
M. showi();
C. showi();
}