《C++程序设计》复习资料Word文档格式.docx
- 文档编号:22402204
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:44
- 大小:28.64KB
《C++程序设计》复习资料Word文档格式.docx
《《C++程序设计》复习资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》复习资料Word文档格式.docx(44页珍藏版)》请在冰豆网上搜索。
类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。
成员函数可以在类体外定义。
成员函数可以定义在类定义内部,或者单独使用范围解析运算符:
:
来定义。
在类定义中定义的成员函数把函数声明为内联的,即便没有使用inline标识符。
所以可以按照如下方式定义
Volume()
函数:
classBox{
public:
doublelength;
//长度
doublebreadth;
//宽度
doubleheight;
//高度
doublegetVolume(void)
{returnlength*breadth*height;
}
};
也可以在类的外部使用范围解析运算符:
定义该函数,如下所示:
doubleBox:
getVolume(void)
}
在:
运算符之前必须使用类名。
调用成员函数是在对象上使用点运算符(.),这样它就能操作与该对象相关的数据。
(作用域运算符“:
:
”的功能是标识成员是属于哪个类的。
)
10、类的访问权限主要有public,protected和private。
11、在面向对象方法中,所谓多态性就是不同对象收到相同消息,产生不同的行为。
在C++程序设计中,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,这样就可以用同一个函数名调用不同内容的函数。
在程序设计中经常会使用到多态性。
最简单的例子就是运算符,例如我们使用运算符+,就可以实现整型数、浮点数、双精度类型之间的加法运算,这三种类型的加法操作其实是互不相同的,是由不同内容的函数实现的。
这个例子就是使用了多态的特征。
在C++中,多态性的实现和联编(也称绑定)这一概念有关。
一个源程序经过编译、链接,成为可执行文件的过程是把可执行代码联编(或称装配)在一起的过程。
其中在运行之前就完成的联编成为静态联编(前期联编);
而在程序运行之时才完成的联编叫动态联编(后期联编)。
静态联编支持的多态性称为编译时多态性(静态多态性)。
在C++中,编译时多态性是通过函数重载和模板实现的。
利用函数重载机制,在调用同名函数时,编译系统会根据实参的具体情况确定索要调用的是哪个函数。
动态联编所支持的多态性称为运行时多态(动态多态)。
在C++中,运行时多态性是通过虚函数来实现的。
12、每个C++程序中都要有且仅有一个主函数,该函数是程序的入口,而语句、预处理命令和函数及类在程序中都可以有多个。
13、
在C++中,要实现动态联编,必须使用基类指针调用虚函数。
动态联编是以虚函数为基础的;
动态联编是在运行时确定所调用的函数代码的;
动态联编调用函数操作是指向对象的指针或对象引用。
C++的继承性允许派生类继承基类的部分成员,并允许增加新的成员或重定义基类的成员。
不加说明时,默认的继承方式是private。
14、在C++程序中的typename是都可以替换为class的,但class不能都替换为typename。
15、耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。
在程序结构中,各个模块的内聚性越强,则耦合性越弱。
一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
16、如果在一个程序块中有两个变量具有相同的名字,并且都有效,只是它们的作用域不同,则优先访问作用域较小的那个变量。
17、C++允许为同一个函数定义几个版本,使其有多种功能,称为函数重载。
18、C++输入/输出操控符中,含义是设置转换基数为十进制是dec,含义是设置转换基数为八进制是oct,含义是设置转换基数为十六进制是hex,输出一个换行符并刷新流的是endl,设置输出数据字段宽度width是setw。
19、重载的运算符的实质是保持原有的运算符个数、优先级和结合性不变。
20、流类库ios_base:
out:
打开文件进行写操作。
ios_base:
binatry:
以二进制方式打开,默认为文本。
showpos:
在正数前添加一个“+”号。
21、指向常量的指针在非常量指针声明前使用const。
指向常量的指针:
constinty=23;
constint*p=&
y;
常量指针:
intx=23;
int*constp=&
x;
指向常量的常量指针:
constint*constp=&
22、一个类可以说明多个纯虚函数,包含纯虚函数的类称为抽象类。
23、const定义常量数据成员、静态常数据成员和常引用。
24、在C++程序设计中,使用new代替malloc分配动态内存。
25、聚合是指复杂对象可以由简单对象构成。
26、利用向量类模板定义一个具有10个double的向量E,元素被置为1.5,其操作语句为:
vector<
double>
E(10,1.5);
。
27构造函数名和类名一样,且在定义构造函数不能有返回类型,即使void也不行。
28、C++预处理语句:
宏定义、文件包含、条件编译。
29、类可以不包括任何声明。
在同一个类中,说明访问特性的关键字可以多次使用。
30、二元运算符作为友元运算符重载,参数表中应有两个参数。
运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符(可以作为成员函数重载,也可以作为友元函数重载)。
31、类A的复制构造函数的原型是:
A:
A(constA&
32、ios类是istream类和ostream类的虚基类。
33、在C++中使用流进行输入输出,其中用于屏幕输出的对象是cout。
34、C++通过类实现数据封装。
35、虚函数未定义,留给派生类去定义的虚函数称为纯虚函数。
实现动态绑定必须声明虚函数。
36、fun()申明为纯虚函数的正确形式是virtualvoidfun()=0;
dynamic_cast操作是专门针对有虚函数的继承结构的,将基类指针转换成想要的子类指针,做好操作的准备。
37、地址运算符&
用来取对象存储的首地址值。
38、C++语言的标准模板库(STL)提供了与要操作的元素类型无关的算法。
泛型算法就是提供的操作与元素的类型无关。
39、C++函数分为库函数、用户自定义函数。
40、UML中实例连接反应对象之间的静态关系,消息连接描述对象之间的动态关系。
41、操控符setprecision(intn)的含义是设置浮点输出精度n。
36、统计数组中包含元素的个数:
n=sizeof(A)/sizeof(*A)。
42、关键字friend用于声明友元;
一个类中的成员函数可以是另一个类的友元;
友元函数访问对象的成员不受访问特性影响。
友元函数可以直接访问对象的私有成员,可以出现于类的私有、公有部分。
友元函数可以在类中声明时定义,也可以在类外定义,如果在类外定义,就不能使用friend关键字。
友元关系不能传递。
43、泛型算法就是提供的操作与元素类型无关。
44、简单的成员函数不包含const、static、volatil。
45、在C++程序设计中,函数返回类型可以是除数组和函数以外的任何类型。
46、如果形参是简单变量,则对应实参与形参之间的数据传递方式是单向值传递。
47、类的常成员函数,无返回值:
voidprint()const。
48、调用函数时,需要改变实参或者返回多个值,应采取传值或传引用的方式。
49、友元函数语句:
friendvoidA:
fun();
50、字符型数据在内存中的存放形式:
ASCII。
51、友元提供了不同类或对象的成员函数之间、类的成员函数于一般函数之间进行数据共享的机制。
通过友元,一个普通函数或者类的成员函数可以访问到封装于某一类中的数据,友元函数可以通过对象名访问类的私有和保护成员。
友元函数的主要作用:
提供程序的效率。
52、不能作为函数重载的判断依据是:
返回类型。
53、C++源程序文件后缀是:
.cpp。
经过编译后,生成文件的后缀是:
.obj。
经过连接后,生成文件的后缀是:
.exe。
C++进行文件操作时需要包含的头文件fstream。
54、模板函数定义的一般形式如下所示:
template<
typenametype>
ret-typefunc-name(parameterlist){//函数的主体}
在这里,type是函数所使用的数据类型的占位符名称。
这个名称可以在函数定义中使用。
函数模板的真正代码是在源程序中调用函数时产生的。
引用模板函数和引用一般函数在语法形式上基本相同。
说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否调用函数模板中的对应形参。
55、注释分为:
序言性注释和功能性注释。
56、C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。
当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。
选择最合适的重载函数或重载运算符的过程,称为重载决策。
重载函数必须有不同的形参列表。
57、派生类不可以继承基类中的构造函数和析构函数。
一个派生类可以作另一派生类的基类
;
派生类至少有一个基类;
派生类的成员除了它自己的成员外,还包含了它的基类的成员。
58、在创建派生类对象时,构造函数的执行顺序是基类构造函数、对象成员构造函数、派生类本身的构造函数。
析构函数与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。
它的名字与类名相同,但前面要加~,没有参数和返回值。
析构函数往往用来做类似清理善后的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。
C++当中的析构函数格式如下:
1
2
3
4
5
6
7
8
9
class
<
类名>
{
public:
~<
();
()
//函数体
}
如以下定义是合法的:
T
~T();
T:
~T()
当程序中没有析构函数时,系统会自动生成以下析构函数:
(){},即不执行任何操作。
C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数
59、在定义类成员时,为体现对外的隐藏性,需要使用的关键字是private。
定义一个生日类,数据成员有年、月、日。
定义一个人员类,数据成员有姓名、性别、生日。
人员类中的生日是生日类的对象,两个类都有构造函数和显示函数。
在主函数中声明一个人员类对象,屏幕显示其数据。
60、静态成员变量是类的所有对象所共有的。
具有转换函数功能的构造函数,应该是带有一个参数的构造函数。
61、有一种只在循环语句或switch语句中使用的流程控制语句,表示该语句的关键字是break。
程序设计参考
1、程序1:
#include
inta=10;
classTC
{
public:
TC()
a=b=0:
}
voiddisplay()
cout<
voidfunc(inta)
this->
a+=a;
voidfunc2()
//******error******
a+=:
a;
private:
inta,b;
};
voidmain()
TCobj;
obj.func(3);
obj.display();
obj.func2();
程序输出的结果为:
30
130
2、程序如下:
#include<
iostream>
usingnamespacestd;
classA
virtualvoidshow()
{cout<
"
A"
;
classB:
publicA
voidshow()
B"
intmain()
Aa1,*pa;
Bb1;
pa=&
a1;
pa->
show();
b1;
return0;
程序运行结果为:
AB
3、程序如下
intx=5;
intfun(inta)
intc:
c=X*a:
returnC;
intx=3,a=4;
x=x+fun(a);
x="
程序运行结果:
x=23
4、下面是关于复制构造函数的程序
iostream.h>
pubic:
A()
”default”<
endl;
A(A&
a)
”copy”<
ClassB
{Aa;
{Bb1,b2(b1);
return();
default
copy
5、下面是关于虚基类的程序
classBase
{public:
Base(){cout<
Base"
classBase2
Base2(){cout<
Base2"
classLevel1:
virtualpublicBase2,virtualpublicBase
Level1(){cout<
Level1"
classLevel2:
publicBase,
virtualpublicBase2
Level2(){cout<
Level2"
classLevel3:
publicLevel1
Level3(){cout<
Level3"
classToplevel:
publicLevel3,virtualpublicLevel2
Toplevel(){cout<
TopLevel"
voidmain(){Toplevelt;
Base2
Base
Level2
Level1
Level3
TopLevel
6、下面是关于虚函数的程序。
virtualvoidf1(){cout<
f1..."
virtualvoidf2(){cout<
f2..."
virtualvoidf3(){cout<
f3..."
voidf4()
{cout<
f4..."
classDerive:
publicBase
{
voidf1()
{cout<
Derive:
f1()..."
}
voidf2(intx){cout<
f2()..."
f4()..."
voidmain(void)
Baseobj1,*ptr;
Deriveobj2;
ptr=&
obj1;
ptr->
f1();
ptr->
f2();
f3();
f4();
obj2
f1...
f2...
f3...
f4...
f1()...
7、程序如下:
#include
voidmain()
{inta[3],i,j,k=2;
for(i=0;
i<
3;
i++)a[i]=i;
ifor(j=0;
ja[j]=a[i];
cout<
a[2];
程序输出结果为:
2
8、程序如下:
Voidmain()
intm=0144;
intn=0X25;
intq=32;
return;
程序输出的结果为:
100
37
32
9、程序如下
intk;
chara[][10]={"
ABCD"
"
EFGH"
IJKL"
MNOP"
for(k=1;
k<
k++)
cout<
&
a[k][k]<
程序的运行结果:
FGH
KL
10、程序如下
A(){cout<
classB
B(){cout<
classC:
publicA,publicB
private:
Aa1;
C(){cout<
C"
Cc1;
程序的运行结果
ABABC
11、下面程序是关于引用返回值的程序。
math.h>
doublearr[5];
double&
select(intnum)
intn;
n=((int)fabs(num))%5;
returnarr[n];
voidmain()
intnum;
for(inti=11;
i<
=15;
i++)
select(i)=i*0.2;
for(i=0;
=4;
cout<
arr[i]<
2.2
2.4
2.6
2.8
12、下面是关于异常处理程序。
enumpower{good_looking=1,intelligence,perseverance};
voidmyTermina
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计 C+ 程序设计 复习资料