class motorcycle :public bicycle,public motorcar{//摩托车类:公有继承自行车类和汽车类 public: void Setdata(int ms,int wt,int ht,int sn) { MaxSpeed=ms; Weight=wt; Height=ht; SeatNum=sn; }; void Show(){ cout<<\最大速度:\< 再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。 访问vehicle的成员时指明继承路径后,可以纠正二义性错误,试修改程序,然后运行。 6 ★ 程序的运行结果: (1) 没有指明继承路径(运行结果) 将上面的程序的bicycle类和motorcar类改为非虚基类公有继承vehicle类后,编译时出现二义(ambiguous)性错误: 1>------ 已启动生成: 项目: cpp, 配置: Debug Win32 ------ 1>生成启动时间为 2013-2-18 11:23:32。 1>InitializeBuildStatus: 1> 正在创建“Debug\\cpp.unsuccessfulbuild”,因为已指定“AlwaysCreate”。 1>ClCompile: 1> main.cpp 1>f:\\projects\\cpp\\cpp\\main.cpp(27): error C2385: 对“MaxSpeed”的访问不明确 1> 可能是“MaxSpeed”(位于基“vehicle”中) 1> 也可能是“MaxSpeed”(位于基“vehicle”中) 1>f:\\projects\\cpp\\cpp\\main.cpp(27): error C2385: 对“Weight”的访问不明确 1> 可能是“Weight”(位于基“vehicle”中) 1> 也可能是“Weight”(位于基“vehicle”中) 1>f:\\projects\\cpp\\cpp\\main.cpp(29): error C2385: 对“MaxSpeed”的访问不明确 1> 可能是“MaxSpeed”(位于基“vehicle”中) 1> 也可能是“MaxSpeed”(位于基“vehicle”中) 1>f:\\projects\\cpp\\cpp\\main.cpp(30): error C2385: 对“Weight”的访问不明确 1> 可能是“Weight”(位于基“vehicle”中) 1> 也可能是“Weight”(位于基“vehicle”中) 1>f:\\projects\\cpp\\cpp\\main.cpp(42): error C2385: 对“Run”的访问不明确 1> 可能是“Run”(位于基“vehicle”中) 1> 也可能是“Run”(位于基“vehicle”中) 1>f:\\projects\\cpp\\cpp\\main.cpp(42): error C3861: “Run”: 找不到标识符 1>f:\\projects\\cpp\\cpp\\main.cpp(45): error C2385: 对“Stop”的访问不明确 1> 可能是“Stop”(位于基“vehicle”中) 1> 也可能是“Stop”(位于基“vehicle”中) 1>f:\\projects\\cpp\\cpp\\main.cpp(45): error C3861: “Stop”: 找不到标识符 1> 1>生成失败。 1> 1>已用时间 00:00:01.07 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== (2) 指明继承路径(程序及运行结果) 将vehicle中数据成员和函数成员指明路径。 //lab7_3.cpp #include int MaxSpeed,Weight;//最大速度,重量 public: void Run(){ cout<<\车vehicle类开始运行!\< 6. 以实验6中的people(人员)类为基类,派生相应的类。 按任务7_4的要求编写程序,并运行。 参考的运行结果: ★ 程序及运行结果: (1) lab6_7.h:People(人员)类的声明及成员函数的实现 //lab6_7.h #include class Date{ private: int yy,mm,dd; public: Date(){ } Date(Date &d) : yy(d.yy),mm(d.mm),dd(d.dd){}//增添 ~Date(){ } int Getyy()const{ return yy; } int Getmm()const{ return mm; } int Getdd()const{ return dd; } void Setyy(int y){ yy=y; } void Setmm(int m){ mm=m; } void Setdd(int d){ dd=d; } }; class People{ private: char name[11]; //姓名,增添 char number[7]; //编号,改为数组 char sex[3]; //男或女,改为数组 Date birthday; //出生日期 char id[16]; //身份证号,改为数组 public: People(){} People(People &p); ~People(){} void Getname(char na[]){ strcpy(na,name); } void Getnumber(char nu[]){ strcpy(nu,number); } void Getsex(char se[]){strcpy(se,sex); } int Getbirthyy()const{ return birthday.Getyy(); } int Getbirthmm()const{ return birthday.Getmm(); } int Getbirthdd()const{ return birthday.Getdd(); } void Getid(char d[]){ strcpy(d,id); } void Setname(char na[]){ strcpy(name,na); } void Setnumber(char nu[]){ strcpy(number,nu); } void Setsex(char se[]){strcpy(sex,se); } void Setbirthyy(int y){ birthday.Setyy(y); } void Setbirthmm(int m){ birthday.Setmm(m); } void Setbirthdd(int d){ birthday.Setdd(d); } void Setid(char d[]){ strcpy(id,d); } 10 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++语言程序设计实验答案_继承与派生(2)在线全文阅读。
相关推荐: