1、国家二级(C+)机试模拟试卷 173 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.程序流程图中带有箭头的线段表示的是( )。(分数:2.00)A.图元关系B.数据流C.控制流D.调用关系2.结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性B.自顶向下C.模块化D.逐步求精3.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.可行性分析报告B.软件需求规格说明书C.概要设计说明
2、书D.集成测试计划5.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用6.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n 一 1)2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序7.下列关于栈的叙述正确的是( )。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据8.在数据库设计中,将 ER 图转换成关系数据模型的过程属于( )。(分数:2.00)A.需求分析阶段
3、B.概念设计阶段C.逻辑设计阶段D.物理设计阶段9.有三个关系 R、S 和 T 如下: (分数:2.00)A.并B.自然连接C.笛卡尔积D.交10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩11.下列语句中,错误的是( )。(分数:2.00)A.const int buffer=256;B.const int temp;C.const double*point;D.const double*
4、rt=new double(55);12.有如下程序: int x=3; do x-=2: coutB.+ - + -C. = ”,使得程序中可以“cinobj;”的形式改变 MyClass 类的对象 obj 中数据成员 data 的值,则横线处的声明语句应为( )。(分数:2.00)A.friend istream&operator(istream&is,MyClass&a);B.friend istream&operator(istream&is,MyClass a);C.istream&operator(istream&is,MyClass&a);D.istream&operator(i
5、stream&is,MyClass a);23.由于常对象不能被更新,因此( )。(分数:2.00)A.通过常对象只能调用它的常成员函数B.通过常对象只能调用静态成员函数C.常对象的成员都是常成员D.通过常对象可以调用任何不改变对象值的成员函数24.有如下类定义: class AA int a; public: int getRef()constreturn&a; int getValue()constreturn a; void set(int n)consta=n; friend void show(AA aa)consttouta; ; 其中四个函数的定义中正确的是( )。(分数:2.0
6、0)A.B.C.D.25.下列关于 this 指针的描述中,正确的是( )。(分数:2.00)A.类的成员函数都有 this 指针B.类的友元函数都有 this 指针C.任何与类相关的函数都有 this 指针D.类的非静态成员函数都有 this 指针26.下列关于虚函数的说明中,正确的是( )。(分数:2.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数27.下列关于基类和派生类关系的叙述中,正确的是( )。(分数:2.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员C.基类的构造
7、函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员28.有如下类定义: class B public:void fun1() private:void fun2() protected:void fun3() ; class D:public B protected:void fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是( )。(分数:2.00)A.objfun1();B.objfun2();C.objfun3();D.objfun4();29.有如下类定义: class Foo public: Foo(int v):val
8、ue(v) Foo() private: Foo() int value=0; ; 其中存在语法错误的行是( )。(分数:2.00)A.B.C.D.30.有如下类定义: class Point int xx,yy; public: Point():xx(0),yy(0) Point(int x,int y=0):xx(x),yy(y) ; 若执行语句 Point a(2),b3,*4; 则 Point 类的构造函数被调用的次数是( )。(分数:2.00)A.2 次B.3 次C.4 次D.5 次31.有如下类定义: class Test public: Test()a=0;c=0; int f(
9、int a)constthis-a=a; static int g()return a; void h(int b)Test:b=b; private: int a; static int b; const int c; ; int Test:b=0; 在标注号码的行中,能被正确编译的是( )。(分数:2.00)A.B.C.D.32.有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的定义中,正确的是( )。(分数:2.00)A.SAMPLE:s
10、etValue(int n0)n=n0;B.void SAMPLE:setValue(int n0)n=n0;C.void setValue(int n0)n=n0;D.setValue(int n0)n=n0;33.有如下程序: #include using namespaee std; class A public: A()cout(i);C.cast(i);D.cast(i);39.要建立文件流并打开当前目录下的文件 filedat 用于输入,下列语句中错误的是( )。(分数:2.00)A.ifstrearn fin=ifstreamopen(“filedat“);B.ifstream*
11、fin=new ifstream(“filedat“);C.ifstream fin;finopen(“filedat“);D.ifstream * fin=new ifstream();fin-open(“filedat“);40.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(分数:2.00)A.ios_base:inB.ios_base:in | ios_base:outC.ios_base:outD.ios_base:in & ios_base:out二、基本操作题(总题数:1,分数:2.00)41.使用 VC6 打开考生文件夹 proj
12、1 下的工程 pwjl,其中定义了一个 CD 类。程序中位于每个ERROR*found*下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是: 歌唱祖国 30 义勇军进行曲 95 注意:只能修改每爪ERROR*found*下的那一行,不要改动程序中的其他内容。#includeiostream#includecstringusing namespace std;class CD char name20; int number;public: void init(char*aa,int bb) ERROR*found* name=aa: number=bb; char*ge
13、tName() ERROR*found* return*name: int getNumber()return number; void output() ERROR*found* coutname20 numberendl; ;void main() CD dx,dy; dxinit(“歌唱祖国“,30); dyinit(“义勇军进行曲“,3*dxgetNumber()+5); dxoutput(); dyoutput();(分数:2.00)_三、简单应用题(总题数:1,分数:2.00)42.使用 VC6 打开考生文件夹 proj2 下的工程 proj2。其中在编辑窗口内显示的主程序文件中定
14、义有类XBase 和 XDerived,以及主函数 main。程序文本中位于每行“*found*下面的一行内有一处或多处下划线标记,请在每个下划线标记处填写合适的内容,并删除掉下划线标记。经修改后运行程序,得到的输出结果为:s=25#includeiostreamusing namespace std;class XBase private: int mem1,mem2; public: *found* XBase(int m1=0,int m2=0):meml(m1),_ *found* virtual int_;*found*class XDerived:_ private: int me
15、re3; public: XDerived():XBase(),mere3(0) *found* XDerived(int ml,int m2,int m3):_ int sum()return XBase:slim()+mem3;void main() XDerived b(3,4,5);XBase a(6,7),*pb=&b; int S=pb-sum()+asum(); cout“s=“sendl:(分数:2.00)_四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 CDeepCopy 是一个
16、用于表示矩阵的类。请编写这个类的赋值运算符成员函数 operator,以实现深层复制。 要求: 补充编制的内容写在“*333*”与“*666*”之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 outdat 中。输出函数 writeToFile 已经编译为obj 文件,并且在本程序中调用。 CDeepCopyh #includeiostream #includestring using namespace std; class CDeepCopy public: int n;动态数组的元素个数 int *p;动态数组首地址 CDeepCopy(int); CDeepCopy();
17、 CDeepCopy&operator=(const CDeepCopy&r);赋值运算符函数 ; void writeToFile(char*); maincpp #include“CDeepCopyh“ CDeepCopy:CDeepCopy()deletep; CDeepCopy:CDeepCopy(int k)n=k;p=new intn;构造函数实现 CDeepCopy&CDeepCopy:operator=(const CDeepCopy&r)赋值运算符函数实现 *333* *666* int main() CDeepCopy a(2),d(3);ap0=1;dp0=666;对象
18、a,d 数组元素的赋值 CDeepCopy b(3);调用赋值运算符函数 ap0=88;b=a; coutbp0;显示内层局部对象的数组元素 coutdp0;显示 d 数组元素 ap0的值 cout“d fade away;n“: coutap0;显示 a 数组元素ap0的值 writeToFile(“); return 0; (分数:2.00)_国家二级(C+)机试模拟试卷 173 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.程序流程图中带有箭头的线段表示的是( )。(分数:2.00)A.图元关系B.数据流C.控制流 D.调用关系解析:解
19、析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择 C。2.结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性 B.自顶向下C.模块化D.逐步求精解析:解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto 语句,所以选择 A。3.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合 C.低内聚高耦合D.高内聚高耦合解析:解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保
20、证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.可行性分析报告B.软件需求规格说明书 C.概要设计说明书D.集成测试计划解析:解析:A 错误,可行性分析阶段产生可行性分析报告。C 错误,概要设计说明书是总体设计阶段产生的文档。D 错误,集成测试计划是在概要设计阶段编写的文档。B 正确,软件需求规格说明书是后续工作如设计、编码等需要的重要参考文档。5.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.
21、算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。6.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n 一 1)2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序 解析:解析:除了堆排序算法的比较次数是 0(nlo2n),其他的都是 n(n1)2。7.下列关于栈的叙述正确的是( )。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.只能在栈底插入数据D.不能删除数据解析:解析:栈是按“先进后出”
22、的原则组织数据的,数据的插入和删除都在栈顶进行操作。8.在数据库设计中,将 ER 图转换成关系数据模型的过程属于( )。(分数:2.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:解析:ER 图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。9.有三个关系 R、S 和 T 如下: (分数:2.00)A.并B.自然连接C.笛卡尔积D.交 解析:解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以 B 错误。笛卡尔积是用 R 集合中元素为第一元素,S 集合
23、中元素为第二元素构成的有序对,所以 C 错误。根据关系 T 可以很明显地看出是从关系 R 与关系 S 中取得相同的关系组所以取得是交运算,选择 D。10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号 D.学号,姓名,成绩解析:解析:学号是学生表 S 的主键,课号是课程表 C 的主键,所以选课表 SC 的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择 C。11.下列语句中,错误的是( )。(
24、分数:2.00)A.const int buffer=256;B.const int temp; C.const double*point;D.const double*rt=new double(55);解析:解析:const 是一个 C+语言的关键字,它限定一个变量不允许被改变。使用 const 在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B 选项中没有初始化,C 选项为指向常量的指针,定义时初始化与否均可,如果是 const*dolable point 形式,则为常指针,必须在定义时进行初始化,A、C、D 都正确。12.有如下程序: int x=3; d
25、o x-=2: cout B.+ - + -C. = ”不能重载为类的友元函数。所以本题答案为 A。20.有如下程序: #include using namespaee std; int main() void function(double val); double val; function(val); cout”,使得程序中可以“cinobj;”的形式改变 MyClass 类的对象 obj 中数据成员 data 的值,则横线处的声明语句应为( )。(分数:2.00)A.friend istream&operator(istream&is,MyClass&a); B.friend istr
26、eam&operator(istream&is,MyClass a);C.istream&operator(istream&is,MyClass&a);D.istream&operator(istream&is,MyClass a);解析:解析:本题考查重载流运算符“”,根据重载规则,本题答案为 A。23.由于常对象不能被更新,因此( )。(分数:2.00)A.通过常对象只能调用它的常成员函数 B.通过常对象只能调用静态成员函数C.常对象的成员都是常成员D.通过常对象可以调用任何不改变对象值的成员函数解析:解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非 const
27、函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员足常数据成员即可。所以本题选 A。24.有如下类定义: class AA int a; public: int getRef()constreturn&a; int getValue()constreturn a; void set(int n)consta=n; friend void show(AA aa)consttouta; ; 其中四个函数的定义中正确的是( )。(分数:2.00)A.B. C.D.解析:解析:本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为 B。25.下列关于 this
28、 指针的描述中,正确的是( )。(分数:2.00)A.类的成员函数都有 this 指针B.类的友元函数都有 this 指针C.任何与类相关的函数都有 this 指针D.类的非静态成员函数都有 this 指针 解析:解析:this 作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用 this 指针。所以答案为 D。26.下列关于虚函数的说明中,正确的是( )。(分数:2.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数 C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都
29、是虚函数解析:解析:在某基类中声明为 vinual 并在一个或多个派生类中被重新定义的成员函数。虚函数必须是基类的非静态成员函数,其访问权限可以是。protected 或 public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为 B。27.下列关于基类和派生类关系的叙述中,正确的是( )。(分数:2.00)A.每个类最多只能有一个直接基类B.派生类中的成员可以访问基类中的任何成员C.基类的构造函数必须在派生类的构造函数体中调用D.派生类除了继承基类的成员,还可以定义新的成员 解析:解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派
30、生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为 D。28.有如下类定义: class B public:void fun1() private:void fun2() protected:void fun3() ; class D:public B protected:void fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是( )。(分数:2.00)A.objfun1(); B.objfun2();C.objfun3();D.objfun4()
31、;解析:解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数 fun1,故本题答案为 A。29.有如下类定义: class Foo public: Foo(int v):value(v) Foo() private: Foo() int value=0; ; 其中存在语法错误的行是( )。(分数:2.00)A.B.C.D. 解析:解析:本题考查对象的初始化,类的数据成员是不能在声明类时初始化的,所以本题答案为 D。30.有如下类定义: cla
32、ss Point int xx,yy; public: Point():xx(0),yy(0) Point(int x,int y=0):xx(x),yy(y) ; 若执行语句 Point a(2),b3,*4; 则 Point 类的构造函数被调用的次数是( )。(分数:2.00)A.2 次B.3 次C.4 次 D.5 次解析:解析:本题考查默认构造函数和带参数的构造函数,题目中定义一个对象 a(2)以及对象数组 b3,共执行 4 次构造函数,对象指针不调用构造函数。所以本题答案为 C。31.有如下类定义: class Test public: Test()a=0;c=0; int f(int
33、 a)constthis-a=a; static int g()return a; void h(int b)Test:b=b; private: int a; static int b; const int c; ; int Test:b=0; 在标注号码的行中,能被正确编译的是( )。(分数:2.00)A.B.C.D. 解析:解析:只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为 c。通过默认构造函数初始化 c,所以不正确。常成员函数只能引用本类中数据成员,而不能修改它,所以不正确。静态成员函数由于没有 this 指针,所以不能访问本类中的非静态成员,所以错误。3
34、2.有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的定义中,正确的是( )。(分数:2.00)A.SAMPLE:setValue(int n0)n=n0;B.void SAMPLE:setValue(int n0)n=n0; C.void setValue(int n0)n=n0;D.setValue(int n0)n=n0;解析:解析:本题考查在类外定义类的成员函数,需要使用作用域限定符“:”,属于基础知识,本题答案为 B。33.有如下程序
35、: #include using namespaee std; class A public: A()cout”括起来,这个表被称为类模板的模板参数表。类模板是类的抽象,类是类模板的实例。类模板使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。所以 B 选项正确。38.有如下函数模板: template T cast(U u)return U; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是( )。(分数:2.00)A.cast(i);B.castopen(“filedat“);解析:解析:本题考查对文件流
36、输入的操作,可以调用文件流的成员函数 pen,一般形式如下:文件流对象open(磁盘文件名,输入输出方式)。根据以上格式,可以判断 A 选项错误。40.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(分数:2.00)A.ios_base:in B.ios_base:in | ios_base:outC.ios_base:outD.ios_base:in & ios_base:out解析:解析:本题考查对文件输入流的操作,ifstream 流类为输入流类,默认的文件输入流打开方式为ios:in。故答案为 A。二、基本操作题(总题数:1,分数:2.0
37、0)41.使用 VC6 打开考生文件夹 proj1 下的工程 pwjl,其中定义了一个 CD 类。程序中位于每个ERROR*found*下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是: 歌唱祖国 30 义勇军进行曲 95 注意:只能修改每爪ERROR*found*下的那一行,不要改动程序中的其他内容。#includeiostream#includecstringusing namespace std;class CD char name20; int number;public: void init(char*aa,int bb) ERROR*found* nam
38、e=aa: number=bb; char*getName() ERROR*found* return*name: int getNumber()return number; void output() ERROR*found* coutname20 numberendl; ;void main() CD dx,dy; dxinit(“歌唱祖国“,30); dyinit(“义勇军进行曲“,3*dxgetNumber()+5); dxoutput(); dyoutput();(分数:2.00)_正确答案:(正确答案:(1)strcpy(name,aa): (2)return name; (3)c
39、outnamenumberendl;)解析:解析:程序定义 CD 类,它包含两个数据成员:字符数组 name 和整型变量 number;还包含四个公有成员函数,init()函数接收两个参数,用参数对数据成员进行赋值;getName()函数返回数据成员name;getNumber()函数返回数据成员 number;output()函数将数据成员 name 和 number 输出。CD 类的定义体中,有三个错误: (1)init()函数将形参 aa 赋给 name,由于 name 是字符数组,所以不能通过简单的赋值运算符进行赋值,应该使用 strcpy()函数将形参 aa 指向的字符串拷贝到 na
40、me 中。 (2)getName()函数的返回值为 char*类型,所以函数体的 return 语句应该返回 name,而不是 name 指向的字符串。 (3)output()函数需要输出两个数据成员,输出字符数组时,只需要给出数组名 name 即可。三、简单应用题(总题数:1,分数:2.00)42.使用 VC6 打开考生文件夹 proj2 下的工程 proj2。其中在编辑窗口内显示的主程序文件中定义有类XBase 和 XDerived,以及主函数 main。程序文本中位于每行“*found*下面的一行内有一处或多处下划线标记,请在每个下划线标记处填写合适的内容,并删除掉下划线标记。经修改后运
41、行程序,得到的输出结果为:s=25#includeiostreamusing namespace std;class XBase private: int mem1,mem2; public: *found* XBase(int m1=0,int m2=0):meml(m1),_ *found* virtual int_;*found*class XDerived:_ private: int mere3; public: XDerived():XBase(),mere3(0) *found* XDerived(int ml,int m2,int m3):_ int sum()return X
42、Base:slim()+mem3;void main() XDerived b(3,4,5);XBase a(6,7),*pb=&b; int S=pb-sum()+asum(); cout“s=“sendl:(分数:2.00)_正确答案:(正确答案:(1)mem2(m2) (2)sum()return mem1+mem2; (3)public XBase (4)XBase(m1,m2),mem3(m3)解析:解析:(1)题意要求使用 m1 和 m2 初始化数据成员 mem1 和 mem2,同 mem1 的初始化一样,需要在成员初始化列表中完成 mem2 的初始化。 (2)sum 函数的定义需
43、要返回 mem1 和 mem2 之和。 (3)XDerired 公有继承 XBase 类,在继承列表中使用 public。 (4)在成员初始化列表中初始化基类成员时,需要调用基类的构造函数,初始化 mem3 时,可以直接初始化。四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 CDeepCopy 是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数 operator,以实现深层复制。 要求: 补充编制的内容写在“*333*”与“*666*”之间。不得修改程序的其他部分。 注意:程序最后将结果输出
44、到文件 outdat 中。输出函数 writeToFile 已经编译为obj 文件,并且在本程序中调用。 CDeepCopyh #includeiostream #includestring using namespace std; class CDeepCopy public: int n;动态数组的元素个数 int *p;动态数组首地址 CDeepCopy(int); CDeepCopy(); CDeepCopy&operator=(const CDeepCopy&r);赋值运算符函数 ; void writeToFile(char*); maincpp #include“CDeepCopyh“ CDeepCopy:CDeepCopy()deletep; CDeepCopy:CDeepCopy(int k)n=k;p=new intn;构造函数实现 CDeepCopy&CDeepCopy:operator=(const CDeepCopy&r)赋值运算符函数实现 *33