杜茂康版C++部分习题参考答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

部分习题解答

第2章习题

2. 读程序,写出程序的执行结果

(1)若输入数据“12 345 634 3214”并按Enter键后,写出程序的输出结果。(2)

第三章习题

9. 指出下面程序的错误。

int &f1(int x=0,int y){ //y应该有缺省值

return x*y; //只能返回整型变量名,因函数返回的是引用}

C++.NET面向对象程序设计

int *f2(int a;int b=1){ //应以逗号为参数间隔符

int t=a*b;

return &t; //t的生命期短于f2函数名,程序会因此出现不定的函数值}

void main(){

const r; //r是常量,当在定义是初始化

int &a,*p; //引用a当在定义时初始化

r=10;

a=r;

const char *pc1="dukang";

char *const pc2="dukang";

char const *pc3="dukang";

const char const*pc4="dukang";

pc1[2]='t'; //pc1所指内容为常量,不能修改

pc2[2]='t';

pc3[2]='t'; // pc3所指内容为常量,不能修改

pc4[2]='t'; //pc4所指内容为常量,不能修改

cout<

cout<

}

10. 读程序,写出程序的执行结果。

(1)

(2)

第4章习题

6. 分析下面程序中的错误。

class X{

private:

int a=0; //数据成员不能在声明类时赋初值

int &b;

const int c;

void setA(int i){ a=i; }

X(int i){ a=i; } //构造函数必须在列表中提供b,c的初如化public:

int X(){a=b=c=0;} //与类同名的函数只能是构造和析构函数,不能有返回类型 //b,c只能在构造函数初始化列表中初始化

X(int i,int j,int k){ a=i;b=j;c=k; }//b,c只能在构造函数初始列表中初始化

static void setB(int k){ b=k; } //静态成员函数不能访问非静态成员b

setC(int k)const{ c=c+k; } //const成员函数不能修改数据成员c };

void main(){

X x1; //默认构函数为private,不能定义对象

X x2(3);

X x3(1,2,3); //应用X类的私有构造函数定义对象,不允许

x1.setA(3); //访问调用私有成员,不允许

}

7. 读程序,写出程序运行结果。

(1)

}

(2)

C++.NET面向对象程序设计

(3)

第5章习题

6. 指出下面程序中的错误。

#include

//应增加using namespace std;

class A{

int x;

A(int a){ x=a; }

public:

setA(int y){ x=y; }

};

class B:private A{

public:

B(){ cout<<"B"<

void main(){

A a1(2), a2; //不能定义a1,没有默认构造函数

A a3=a1;

B b;

b.setA(3); //在B中,setA被private继承方式更改为私有成员,不能访问

}

7. 读程序,分析程序的运行结果。

(1)

(2)

C++.NET面向对象程序设计

第6章习题

6. 读程序,写出程序运行的结果。

(1)

写出本程序的结果,并指出本程序存在的错误。

本程序执行过程中,由于x1,x2,x3三个对象的指针数据成员s都指向同一内存区域,在它们的生存期结束时,将调用析构函数,同一内存区域(即s所指向的区域)将被delete 3次,产生指针悬挂问题。

(2)

3)

第8章4-1

4-2

第9章

C++.NET面向对象程序设计6-1

6-2

6-3

6-4

相关文档
最新文档