内蒙古科技大学面向对象的程序设计实验8 继承一精编版.docx
《内蒙古科技大学面向对象的程序设计实验8 继承一精编版.docx》由会员分享,可在线阅读,更多相关《内蒙古科技大学面向对象的程序设计实验8 继承一精编版.docx(18页珍藏版)》请在冰豆网上搜索。
内蒙古科技大学面向对象的程序设计实验8继承一精编版
内蒙古科技大学
面向对象的程序设计
实验报告
课程名称:
姓名:
陈伟光
实验名称:
继承
(一)
学号:
1567159118
任课教师:
刘月峰
专业:
软件工程
指导教师:
班级:
15-软件一班
一、实验目的
1.理解继承的含义以及声明;
2.理解共有派生、私有派生和保护派生的含义以及使用;
3.理解单派生类中构造函数和析构函数的调用顺序。
二、实验环境
编译器:
VisualC++6.0.
操作系统:
Windows7 旗舰版
三、实验内容
2.1练习
(一):
1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。
#include"iostream.h"
classCBase
{
public:
CBase(inta)
:
a(a)
}
protected:
voidprint()
cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){ CBase::print(); cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}问题一:以上程序有两大错误,试指出来,并改正之?2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。#include"iostream.h"classCBase{public:CBase(inta) :a(a){ cout<<"basestructure"<}~CBase(){ cout<<"basedestructure"<}voidprint(){ cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc) :CBase(a),b(b),c(c){ cout<<"derivestructure"<}~CDerive(){ cout<<"derivedestructure"<}voidprint(){ CBase::print(); cout<<"b.a="< cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
private:
inta;
};
classCDerive:
publicCBase
CBase:
print();
cout<<"b="<
intb;
voidmain()
CDerived;
d.print();
CBaseb;
b.print();
问题一:
以上程序有两大错误,试指出来,并改正之?
2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。
cout<<"basestructure"<}~CBase(){ cout<<"basedestructure"<}voidprint(){ cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc) :CBase(a),b(b),c(c){ cout<<"derivestructure"<}~CDerive(){ cout<<"derivedestructure"<}voidprint(){ CBase::print(); cout<<"b.a="< cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
~CBase()
cout<<"basedestructure"<}voidprint(){ cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc) :CBase(a),b(b),c(c){ cout<<"derivestructure"<}~CDerive(){ cout<<"derivedestructure"<}voidprint(){ CBase::print(); cout<<"b.a="< cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc) :CBase(a),b(b),c(c){ cout<<"derivestructure"<}~CDerive(){ cout<<"derivedestructure"<}voidprint(){ CBase::print(); cout<<"b.a="< cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
CDerive(inta,intb,intc)
CBase(a),b(b),c(c)
cout<<"derivestructure"<}~CDerive(){ cout<<"derivedestructure"<}voidprint(){ CBase::print(); cout<<"b.a="< cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
~CDerive()
cout<<"derivedestructure"<}voidprint(){ CBase::print(); cout<<"b.a="< cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"b.a="< cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}问题一:以上程序的输出结果是什么,说明为什么?问题二:①处语句执行完后,d.b.a的值为多少?2.2练习(二):1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;b.CCircle类含有计算圆面积的成员函数。四、实验过程练习1实验题目源代码如下:直接编译结果如下:查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public修改后的代码如下:然后尝试编译运行:运行成功,符合题意 练习2实验题目提供源代码如下:尝试编译:错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,修改之后的代码如下:尝试编译运行:结果和代码本意相同,修改成功 练习3根据题意,设计代码如下:面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积试运行结果如下:运行结果正确 五、实验总结实验源代码:练习(一) #include"iostream.h"classCBase{public:CBase(inta):a(a){}//protected:voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型{cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
intc;
CDerived(1,2,3);-----------------------------------------------------①
以上程序的输出结果是什么,说明为什么?
问题二:
①处语句执行完后,d.b.a的值为多少?
2.2练习
(二):
1.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点:
a.CLine类含有计算直线长度和斜率的成员函数;
b.CCircle类含有计算圆面积的成员函数。
四、实验过程
练习1
实验题目源代码如下:
直接编译结果如下:
查看错因,首先前两句话写明,在创建CBase和CDerive对象时候,没有传递参数,实际代码中CDerive根本没有正确的构造函数,代码区中加入一段带有初始化列表的构造函数
第三句话指明基类对象b直接调用CBase类保护成员函数,属于类外调用,权限错误,此处可以将print的权限改为public
修改后的代码如下:
然后尝试编译运行:
运行成功,符合题意
练习2
实验题目提供源代码如下:
尝试编译:
错误集中在基类成员数据a上,分析代码,CDerive类对象d创建时候一共有三个参数,1传递至派生类,再调用基类构造函数,3直接传递给派生类构造函数,2传递给了派生类的中内嵌的基类成员对象,然而在公有继承下,派生类对象只能访问基类的公有数据,所以此处将a的权限改为public,
修改之后的代码如下:
尝试编译运行:
结果和代码本意相同,修改成功
练习3
根据题意,设计代码如下:
面积计算以及斜率计算分别写在了CLine类和CCircle类的构造函数中,在创建对象的时候输入x2,y2r即可算出距离和面积
试运行结果如下:
运行结果正确
五、实验总结
实验源代码:
练习
CBase(inta):
//protected:
voidprint()//错误1.CBase类对象类外无法直接调用此主函数,应该改为public型
cout<<"a="<}private:inta;};classCDerive:publicCBase{public:CDerive(inta,intb):CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误{}voidprint(){CBase::print();//保护继承下,派生类中可以访问基类的公有和保护数据cout<<"b="<}private:intb;};voidmain(){CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数d.print();CBaseb(0);b.print();} /*#include"iostream.h"classCBase{public:CBase(inta):a(a){}protected:voidprint(){cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
CDerive(inta,intb):
CBase(a),b(b)//错误2.构造函数错误,初始化列表和参数错误
{}
print();//保护继承下,派生类中可以访问基类的公有和保护数据
CDerived(0,0);//因为原题构造函数中有形参,所以创建要加上参数
CBaseb(0);
/*
cout<<"a="<}private:inta;};classCDerive:publicCBase{public:voidprint(){CBase::print();cout<<"b="<}private:intb;};voidmain(){CDerived;d.print();CBaseb;b.print();}*/ 练习(二) #include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
*/
(二)
cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"basedestructure"<}voidprint(){cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"a="<}public:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);//-----------------------------------------------------①d.print();} /*1.没有任何输出结果,因为程序无法通过编译2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2*/ /*#include"iostream.h"classCBase{public:CBase(inta):a(a){cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
CDerived(1,2,3);//-----------------------------------------------------①
1.没有任何输出结果,因为程序无法通过编译
2.d.b.a的值为2,因为构造函数实参的第二个元素2,传递给CDerive类的子对象b,b.a被初始化为2
cout<<"basestructure"<}~CBase(){cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"basedestructure"<}voidprint(){cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"a="<}protected:inta;};classCDerive:publicCBase{public:CDerive(inta,intb,intc):CBase(a),b(b),c(c){cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"derivestructure"<}~CDerive(){cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"derivedestructure"<}voidprint(){CBase::print();cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"b.a="<cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"c="<}private:CBaseb;intc;};voidmain(){CDerived(1,2,3);-----------------------------------------------------①d.print();}*/ 练习(三) #include#includeclassCPoint{private:floatx,y;public:CPoint(floatx1,floaty1):x(x1),y(y1){cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
练习(三)
#include
classCPoint
floatx,y;
CPoint(floatx1,floaty1):
x(x1),y(y1)
cout<<"--------CPoint基类构造函数已调用---------"<}voiddisplay(){cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
voiddisplay()
cout<<"x="<:x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
x<<""<<"y="<:y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
y<}};classCLine:publicCPoint{private:doublek;doublel;public:CLine(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
classCLine:
publicCPoint
doublek;
doublel;
CLine(floatx1,floaty1):
CPoint(x1,y1)
cout<<"--------CLine派生类构造函数已调用--------"<floatx2,y2;cout<<"Pleaseinputx2,y2:"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
floatx2,y2;
cout<<"Pleaseinputx2,y2:
"<cin>>x2>>y2;l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));cout<<"l:"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cin>>x2>>y2;
l=sqrt((x1-x2)*(x1-x2)+(y2-y1)*(y2-y1));
cout<<"l:
"<if(y2-y1!=0){k=(y2-y1)/(x2-x1);cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
if(y2-y1!
=0)
k=(y2-y1)/(x2-x1);
cout<<"k="<}elsecout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
else
cout<<"分母为0,k不存在"<}};classCCircle:publicCPoint{private:doubler;public:CCircle(floatx1,floaty1):CPoint(x1,y1){cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
classCCircle:
doubler;
CCircle(floatx1,floaty1):
cout<<"--------CCircle派生类构造函数已调用------"<cout<<"pleaseinputr:"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cout<<"pleaseinputr:
"<cin>>r;cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cin>>r;
cout<<"S="<<3.14159*r*r<}};voidmain(){floatx1,y1;cout<<"Pleaseinputx1,y1:"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
floatx1,y1;
cout<<"Pleaseinputx1,y1:
"<cin>>x1>>y1;CPointCP(x1,y1);CP.display();CLineCL(x1,y1);CCircleCC(x1,y1);} 六、参考文献参考的资料:C++面向对象程序设计
cin>>x1>>y1;
CPointCP(x1,y1);
CP.display();
CLineCL(x1,y1);
CCircleCC(x1,y1);
六、参考文献
参考的资料:
C++面向对象程序设计
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1