c++语言程序设计课后答案(2)

2020-03-27 20:05

int a = Fn1();

cout << \ return 0; } int Fn1() {

int * p = newint (5); return *p; } 解:

此程序中给*p分配的内存没有被释放掉。 改正:

#include using namespace std; int * fn1(){

int *p=new int(5); return p; } int main() {

int *a=fn1();

cout<<\ delete a; return 0; }

7-2 派生类构造函数执行的次序是怎样的? 解:

派生类构造函数执行的一般次序为:调用基类构造函数;调用成员对象的构造函数;派生类的构造函数体中的内容。

7-4 什么叫做虚基类?有何作用? 解:

当某类的部分或全部直接基类是从另一个基类派生而来,这些直接基类中,从上一级基类继承来的成员就拥有相同的名称,派生类的对象的这些同名成员在内存中同时拥有多个拷贝,我们可以使用作用域分辨符来唯一标识并分别访问它们。我们也可以将直接基类的共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只拥有一个拷贝,这样就解决了同名成员的唯一标识问题。虚基类的声明是在派生类的定义过程,其语法格式为: class 派生类名: virtual继承方式基类名上述语句声明基类为派生类的虚基类,在多继承情况下,虚基类关键字的作用范围和继承方式关键字相同,只对紧跟其后的基类起作用。声明了虚基类之后,虚基类的成员在进一步派生过程中,和派生类一起维护一个内存数据拷贝。

7-6 定义一个哺乳动物 Mammal类,再由此派生出狗 Dog类,定义一个 Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。 解: 源程序:

#include

enum myColor{BLACK,WHITE};

6 / 9

class Mammal {

public: //构造函数 Mammal();

~Mammal(); //访问数据成员 int GetAge() const{return itsAge;} void SetAge(int age){itsAge=age;} int GetWeight() const {return itsWeight;}

void SetWeight(int weight){itsWeight=weight;} //其他函数 void Speak() const {cout<<\ protected: int itsAge; int itsWeight; };

class Dog:public Mammal { public: Dog(); ~Dog();

myColor GetColor() const{return itsColor;} void SetColor (myColor color){itsColor=color;} void WagTail(){cout<<\\\n\ private:

myColor itsColor; };

Mammal::Mammal():itsAge(1),itsWeight(5){ cout<<\\\n\ }

Mammal::~Mammal(){

cout<<\\\n\ }

Dog::Dog():itsColor(WHITE){ cout<<\\\n\ }

Dog::~Dog() {

cout<<\\\n\ } int main() {

Dog Jack; Jack.Speak(); Jack.WagTail();

cout<<\ return 0;

7 / 9

}

7-7 定义一个基类,构造其派生类,在构造函数中输出提示信息,观察构造函数的执行情况。 解:

#include class BaseClass { public: BaseClass(); };

BaseClass::BaseClass() {

cout << \构造基类对象!\ }

class DerivedClass : public BaseClass { public:

DerivedClass(); };

DerivedClass::DerivedClass() {

cout << \构造派生类对象!\ }

void main() {

DerivedClass d; }

程序运行输出: 构造基类对象!

8-1 什么叫做多态性 ?在 C++中是如何实现多态的? 解:

多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。 C++支持的多态有多种类型,重载 (包括函数重载和运算符重载 )和虚函数是其中主要的方式。

8-2 什么叫做抽象类?抽象类有何作用?抽象类的派生类是否一定要给出纯虚函数的实现? 解:

带有纯虚函数的类是抽象类。抽象类的主要作用是通过它为一个类族建立一个公共的接口,使它们能够更有效地发挥多态特性。抽象类声明了一组派生类共同操作接口的通用语义,而接口的完整实现,即纯虚函数的函数体,要由派生类自己给出。但抽象类的派生类并非一定要给出纯虚函数的实现,如果派生类没有给出纯虚函数的实现,这个派生类仍然是一个抽象类。

8-5 编写一个哺乳动物类Mammal,再由此派生出狗类Dog ,两者都声明Speak()成员函数,该函数在

基类中被声明成虚函数,声明一个Dog类的对象,通过此对象调用Speak函数,观察运行结果 解:

#include #include

8 / 9

class Mammal { protected: char name[10]; public: virtual void set() {

strcpy(name,\哈哈\ }

virtual void speak() {

cout<<\这是哺乳动物\} };

class Dog:public Mammal { public: void set() {

strcpy(name,\哈哈\}

void speak() {

cout<<\这是哺乳动物:狗\} };

void fun(Mammal &s) { s.speak(); }

void main() {

Mammal m1; Dog d2; fun(m1); fun(d2); }

运行结果: 这是哺乳动物 这是哺乳动物:狗

9 / 9


c++语言程序设计课后答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:图书馆管理系统软件设计文档--示范

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: