软考培训讲座5C++Word文件下载.docx

上传人:b****3 文档编号:15795973 上传时间:2022-11-16 格式:DOCX 页数:38 大小:64.39KB
下载 相关 举报
软考培训讲座5C++Word文件下载.docx_第1页
第1页 / 共38页
软考培训讲座5C++Word文件下载.docx_第2页
第2页 / 共38页
软考培训讲座5C++Word文件下载.docx_第3页
第3页 / 共38页
软考培训讲座5C++Word文件下载.docx_第4页
第4页 / 共38页
软考培训讲座5C++Word文件下载.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

软考培训讲座5C++Word文件下载.docx

《软考培训讲座5C++Word文件下载.docx》由会员分享,可在线阅读,更多相关《软考培训讲座5C++Word文件下载.docx(38页珍藏版)》请在冰豆网上搜索。

软考培训讲座5C++Word文件下载.docx

p=newtype[size];

其中type是一个数据类型名,p是指向该类型的指针。

size是分配数量。

比如

#include<

iostream.h>

voidmain(){

int*p;

p=newint;

*p=25;

//*p是一个动态整型变量

cout<

*p<

deletep;

p=newint[6];

//p指向包含6个整型数组元素的内存区域

*(p+1)=25;

//数组元素p[1]=25

*(p+1)<

delete[]p;

}

②delete用于撤消new所分配的内存,形式为:

deletep;

或delete[]p;

(3)重载函数

重载函数:

函数名相同,参数类型或参数个数不同。

例2

intmax(inta,intb){returna>

b?

a:

b}

intmax(inta,intb,intc)

{intt=max(a,b)

returnmax(t,c)

voidmain()

{

max(2,3)<

max(2,3,8)<

(4)函数缺省参数

缺省参数就是在参数列表中给出参数的缺省值。

例如,上述例2中,2个重载函数可以合并成一个带缺省参数的求3个整数的最大数的函数,其原型为:

intmax(inta,intb,intc=-32768);

若从2个数(2,3)中求大数,使用调用表达式:

max(2,3)

若从3个数(2,3,8)中求大数,使用调用表达式:

max(2,3,8)

注意:

①缺省参数必须放在参数序列的最后。

②若一个缺省参数需要指明一个特定值,则在其之前的所有参数都必须赋值。

③重载函数和缺省参数一起使用时,要避免二义性。

例“2006年下半年软件设计师试题”

●在C++语言中,若类C中定义了一个方法intf(inta,intb),那么方法(33)不能与该方法同时存在于类C中。

(33)A.intf(intx,inty)B.intf(floata,intb)

C.floatf(intx,floaty) D.intf(intx,floaty)

2类和对象

在C++中,类是一种用户自定义的数据类型,它既包括数据(数据成员),也包括对数据的操作(成员函数),类把数据和操作封装为一个整体。

可以使用类名去说明对象(即类的实例化)。

注:

在C++中,常用的“用户自定义的数据类型”有三种:

结构型(struct)、枚举型(enum)、类(class)。

知识要点:

(1)构造函数

构造函数是类的成员函数;

其函数名与类名相同;

无返回类型;

在类的对象创建时被自动调用;

构造函数可以重载。

(2)析构函数

析构函数是类的成员函数;

其函数名与类名相同,但前面冠有~;

没有参数;

在对象的生存期结束时被自动调用;

析构函数可以缺省。

(3)拷贝构造函数(复制构造函数)

拷贝构造函数是类的成员函数;

参数的类型为“类的引用”,而且只有一个参数;

使用该类的一个对象去初始化另一个对象时被自动调用;

拷贝构造函数可以缺省。

(4)类作用域

说明类时所使用的一对花括号形成“类作用域”。

类作用域运算符为“:

:

”。

“类名:

”表示其后的成员是在“类名”中说明的。

成员名”称为“成员名限定”。

类中也可以只对成员函数进行声明(无函数体),然后在程序的其它地方定义这些成员函数的实现,函数的实现形式为:

返回类型类名:

成员函数名(参数)

{

函数体

(5)类成员的访问权限

①private:

私有成员,只有该类的成员函数可以访问。

②public:

公有成员,任何函数都可以访问。

③protected:

保护成员,在类的继承层次结构中,基类的保护成员,对派生类的成员函数而言,它是公有成员,可以被访问;

对其他函数而言,它是私有成员,不能被访问。

(6)this指针

当一个成员函数被调用时,系统自动向它传递一个隐含的指针参数,用this来表示。

该指针指向调用该函数的对象。

(7)对象成员

如果一个类的数据成员是另一个类的对象,则称该数据成员为对象成员。

对象成员的初始化必须采用“成员初始化列表”来完成。

例3

classA{

private:

intval;

public:

A(inti){val=i;

……

};

classB{

Aa1,a2;

intdata;

B(inti,intj,intk):

a1(i),a2(j){data=k;

其中冒号后由逗号隔开的项——“:

a1(i),a2(j)”即为成员初始化列表。

对基本数据类型的成员的初始化也可以在成员初始化列表中进行。

例如:

a1(i),a2(j),data(k){};

例4

classPoint

{public:

Point(intx,inty){X=x;

Y=y;

}//Point构造函数

Point(Point&

p){X=p.X;

Y=p.Y;

}//Point拷贝构造函数

voidprint(){cout<

'

('

X<

“,”<

Y<

“)”<

~Point(){}//Point析构函数

intX,Y;

{Pointp1(1,1);

p1.print();

Pointp2(p1);

p2.set(3,2);

p2.print();

上述程序先构造了一个Point类,此类中有:

两个私有成员X,Y,构造函数Point,拷贝构造函数Point,析构函数~Point,成员print。

在主函数中,定义了两个对象p1和p2。

例5“2006年下半年程序员试题”

●类的构造函数被自动调用执行的情况发生在定义该类的(42)时。

(42)A.成员函数  B.数据成员  C.对象  D.友元函数

例6“2005年下半年程序员试题”P10(6)

[说明]

  类Stock的定义中有三处错误,分别在代码的第04、06、10行。

请补齐下述代码中的空缺1,修改错误并给处修改后该行的完整代码,最后完善程序运行后的输出结果。

[C++代码]

01#include<

iostream>

02usingnamespacestd;

03classStock{

04protected:

05 Stock(){shares=0;

share_val=0.0;

Output();

}

06Stock(intn=0,doublepr=3.5):

(1){//初始化shares值为n

07  share_val=pr;

08  Output();

09  };

10void~Stock(){};

11voidOutput(){cout<

shares<

<

share_val<

endl;

}

12public:

13  //成员函数

14private:

15  //成员变量

16  intshares;

17  doubleshare_val;

18};

19

20voidmain(){//构造三个Stock对象a,b,c

21 Stocka

(1);

22 Stockb;

23 Stockc=Stock();

24 //其他代码省略,且代码无输出

25}

  程序运行后的输出结果为:

  1:

3.5

  _____

(2)_____

  _____(3)_____

3继承和派生类

继承是父类和子类之间共享数据和方法的机制。

一个子类可以继承它的父类中的属性和操作,子类还可以定义自己的属性和操作。

在一个面向对象系统中,子类和父类之间的继承关系构成了这个系统的类层次结构。

在C++中,父类称为基类,子类称为派生类。

知识要点:

(1)公有派生的访问权限:

①基类的公有成员在派生类中是公有的。

②基类的保护成员在派生类中是保护的。

③基类的私有成员在派生类中是不可以访问的。

(2)私有派生的访问权限:

①基类的公有成员在派生类中是私有的。

②基类的保护成员在派生类中是私有的。

③基类的私有成员在派生类中是不可以访问的

(3)保护派生的访问权限:

①基类的公有成员在派生类中是保护的。

●注意:

访问权限为公有的,在类内和(在类外建立的)类的对象都可以访问;

访问权限为保护的,在类内可以访问,但类的对象不可以访问;

访问权限为私有的,在类内可以访问,但类的对象不可以访问。

例7“2006年上半年软件设计师试题”

●已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:

类P和类Q是类O的派生类,其继承方式如下所示:

classP:

protectedO{…};

classQ:

publicO{…};

关于方法F1的描述中正确的是(34);

关于方法F2韵描述中正确的是(35);

关于方法F3的描述中正确的是(36)。

(34)A.方法F1无法被访问

  B.只有在类O内才能访问方法F1

C.只有在类P内才能访问方法F1

D.只有在类Q内才能访问方法F1

(35)A.类O、P和Q的对象都可以访问方法F2

B.类P和Q的对象都可以访问方法F2

C.类0和Q的对象都可以访问方法F2

D.只有在类P内才能访问方法F2

(36)A.类0、P和Q的对象都可以访问方法F3

B.类0、P和Q的对象都不可以访问方法F3

C.类0和Q的对象都可以访问方法F3

D.类P和Q的对象都可以访问方法F3。

解析:

此例写成C++代码为

classO{

voidF1(){}

voidF2(){F1();

}

protected:

voidF3(){}

classP:

protectedO{};

classQ:

publicO{};

{Oo1;

Pp1;

Qq1;

o1.F2();

p1.F2();

//错误。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1