113200880200010
王浩文
5、声明一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义Speak( )成员函数,基类中定义为虚函数。声明一个Dog类的对象,调用Speak()函数,观察运行结果。 程序:
#include Mammal() {cout<<\"call Mammal\"< Dog() {cout<<\"call Dog\\n\"; } void speak() {cout<<\"call Dog class\\n\"; } }; void main() { Mammal a; a.speak(); Dog b; b.speak(); } 答: 程序的运行结果应该是先调用Mammal累的构造函数,输出: call Mammal 然后a.speak();调用Mammal中的speak函数,输出: call base class 接着调用Dog类,先对其父类Mammal进行析构,输出: call Mammal 然后再对Dog进行析构,输出: call Dog 接着执行Dog中的speak函数,输出: call Dog class 程序运行结果为: 6、定义一个从正方体、球体和圆柱体的各种运算中抽象出一个公共基 container类,在其中定义表面积和体积的纯虚函数,在抽象类中定义一个公共的成员数据radius,此数据可作为球体的半径,正方形的边长,圆柱体的底面的半径。 分析: 定义一个派生于container类的正方体类cube,在类中都具有求表面积的和体积的重定义的成员函数。 定义一个派生于container类的球体类sphere,在类中都具有求表面积和体积的重定义的成员函数。 定义一个派生于container类的圆柱体类cylinder,在类中都具有求表面积和体积的重定义的成员函数。 答案: #include class container { public: double radius; ~container() {} virtual void squir()=0; virtual void volume()=0; }; class cube :public container { public: cube(double a1) ~cube() {} void squir() { } double a2; a2=radius*radius*6; cout<<\"正方体的面积是: S=\"< }; void volume() { } double a3; a3=radius*radius*radius; cout<<\"正方体的体积是: V=\"< public: sphere(double b1) {radius=b1;} }; class cylinder :public container { private: double h; public: cylinder(double c1, double h1) ~cylinder() {} void squir() { } void volume() { double c3; c3=radius*radius*PI*h; double c2; c2=radius*radius*PI*2+radius*2*PI*h; cout<<\"圆柱体的面积是: S=\"< ~sphere() {} void squir() { } void volume() { } double d3; d3=radius*radius*radius*PI*4/3; cout<<\"球体的体积是: V=\"< b2=radius*radius*4*PI; cout<<\"球体的面积是: S=\"< main() { cube cu(2.0); cout<<\"正方体的边长l=2\"< cout<<\"圆柱的底面半径r=2,高h=3\"< 运行结果: 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务