自考c++知识点总结Word下载.docx
《自考c++知识点总结Word下载.docx》由会员分享,可在线阅读,更多相关《自考c++知识点总结Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
sort(b,b+数组长度,greater<
Type>
())
(6)查找数组内容:
find(a,a+数组长度,value)
(7)数组内容的输出:
copy(a,a+len,ostream_iterator<
(cout,"
字符串"
));
可将ostream_iyerator理解为输出流控制符,<
表示数组元素的数据种类
"
字符串"
是数组元素间的间隔。
8.数据的简单输入输出
C++提升了两种格式控制方式:
一种是使用ios_base类供给的接口;
另一种是称为操
控符的特别函数,它的特色是能够直接包含在输出和输入表达式中,所以更为方便。
不带参数控制符定义在头文件<
iostream>
中,带形式的定义在头文件<
iomanip>
中
三是无参数的控制符函数不可以带有()
名称
Dec
oct
Hex
Endl
Resetiosflags(long
flags)
Setiosflags(longflags)
Setfill(charch)
Setprecision(intn)
Setw(intwidth)
常量及其含义
常量名
Ios_base:
:
left
right
showpoint
showpos
scientific
fixed
1.string对象
含义作用
设置变换基数为十进制输入/输出
设置变换基数为八进制输入/输出
设置变换基数变换为十六输入/输出
进制
输出一个换行符输出
消除flag标记位输出
设置ch为填补字符输出
设置浮点数输出精度输出
设置输出字符间字段宽度输出
含义
输出域左对齐
输出域右对齐
浮点数输出一定带一个小数点
在正数前面加+
使用科学计数法表示浮点数
使用定点形式表示浮点数
第二章
(1)string对象包含于#include<
string>
头文件包中
(2)计算字符串长度的函数:
size(),使用方法是字符串.size()
(3)返回字符串子串的函数:
substr(开端地点,结束地点)
给出的开端地点一定位于字符串中,不然犯错。
假如结束地点大于字符串的长
度,则自动截取到字符串尾部。
(4
)字符串查找函数:
find(要查找字符串,开始查找的地点)
(5
)String类有一对用来指示其元素地点在的基本函数成员:
begin()和end(),
Begin()指示第一个元素,end()指示最后一个元素以后。
假如
算法第一作用于begin()所指元素,而后指向下一个元素,知道
以元素存在于半开区间[begin,end)中。
begin()不等于
begin()等于
end()
,则
。
所
(6)char定义的字符串使用“\0”作为结束标记。
String不是。
2.使用complex对象
(1)这个对象包含于头文件#include<
complex>
中。
使用方法:
complex<
数据种类>
对象名(实部值,虚部值)
Complex使用成员函数real()和imag()函数输出实部和虚部值
(2)string种类的数组的swap()成员函数能够互换连个数组重量。
第三章
1.函数的参数及其传达方式
(1)对象作为函数参数:
将对象名作为函数参数,这类传达是单向的,不会改变实参的值。
(2)对象指针作为函数参数:
将对象地点作为函数参数,这类传达会改变实参的值。
(3)引用作为函数参数:
定义时,形参是又名;
调用时,实参是对象名。
实参对象和形参对象代表同一个对象,所以改变形参对象就是改变实参对象。
2.使用const保护数据:
使用const修饰符传达参数,只好使用参数而无权改正参
数。
这样能提升系统安全。
3.函数返回值
(1)函数能够返回一个引用,返回一个引用的主要目的是为了将该函数用在赋值运算
符的左侧。
函数原型表示方法:
数据种类&
函数名(参数列表)
(2)返回指针函数:
返回值是储存了某种种类数据的内存地点,这类函数称为指针
函数。
申明函数原型表示方法:
种类标示符*函数名(参数列表)
当函数返回一个空指针值是,这个能够作为程序异样的标记。
(3)返回对象:
函数返回string等对象。
(4)函数返回值作为函数参数:
假如把函数返回值作为另一个函数的参数,这个函数
的返回值一定和参数种类一致。
4.内联函数
内联函数的申明只需在函数前加上重点字“inline”即可。
内联函数一定在函数第一次
被调用前出现并定义。
5.函数的重载和默认参数
函数重载指函数名同样,但输入参数种类不一样或个数不一样。
默认参数一般在参数列表中给出,intadd(intm1=0,intm2=0)。
6.函数模板
在函数定义时加上Template<
typenameT>
或Template<
classT>
。
实质调用时能够不指出T的数据种类,也可显式指出。
第四章
1.定义类
(1)申明类:
class类名{Private:
私有数据和函数
Public:
共有数据和函数
Protected:
保护数据和函数
};
花括号后边的分号必不可以少
(2)类外定义成员函数一般形式:
返回种类类名:
成员函数(参数列表)
{
成员函数的函数体
}
“:
”是作用域运算符,其意思表面后来的成员函数时属于这个特定的类。
(3)数据成员的赋值
不可以在定义数据成员的同时进行赋值,这类做法是错误的。
2.使用类的对象
(1)类不单能够申明对象,还能够申明对象的引用和对象的指针,其语法与基本数据种类同样。
(2)定义类对象的指针语法:
类名*对象指针名;
(3)数据封装这些内存块中不单储存数据,也储存代码,这有益于数据和功能安全。
同时这些内存块的结构可被用作样板产生跟多对象。
3.结构函数
(1)为了使对象的状态确立,一定对其进行正确的初始化。
初始化的操作和赋值操作是不一样的。
(2)默认结构函数:
类名:
类名(){}
默认结构函数是系统自动产生的,当用户定义了自己的结构函数系统就不在供给默认结构函数。
(3)定义结构函数:
结构函数的名字和类名同样,并且定义结构函数的时候不可以有返回值种类,即便是void也不可以够。
(4)类可有多个函数,在类体的申明形式以下:
类名(形参1,形参2,形参3......形
参n);
在程序中说明一个对象时,程序自动调用结构函数来初始化对象,使程序为对象自动化分派内存。
(5)程序员不可以在程序中显示的调用结构函数,结构函数是自动调用的。
(6)结构函数和运算符new:
运算符new用于成立生计期可控的对象,new返回这个对象的指针,所以使用new成立动向对象的语法和成立动向变量的状况近似,其不
同点是new和结构函数一起起作用。
(7)当使用new成立一个动向对象,new第一分派足够对象的内存,而后自动结构函数来初始化这块内存,再返回这个动向对象的地点。
(8)结构函数的默认参数:
假如程序定义自己的有参结构函数,又想使用无参数形式的结构函数,那么就是吧结构函数使用默认参数设计。
(9)复制结构函数:
引用在类中一个很重要的用途是用在复制结构函数中。
这一类特别并且重要的函数往常用于使自己已有的对象来成立一个新对象。
复制结构函数原型
以下:
类名:
类名(const类名&
)
4.析构函数
(1
)析构函数析构函数的名称和类名同样,为了与结构函数划分在析构函数前面加
~
符号。
析构函数不可以定义任何返回种类,即便指定为
void也不可以。
一般形式以下:
类
名:
~类名(void)
(2
)析构函数在对象的生计期结束时被主动调用。
类得对象数组的每个元素调用一次
结构函数。
(3
)析构函数和运算符delete:
当使用delete删除一个动向对象时,它第一为这个动
态对象调用析构函数,而后再开释这个动向对象占用的内存。
这和使用
new成立动向
对象的过程恰好相反。
5.成员函数重载及默认函数
(1)this指针:
c++规定当一个成员函数被调用时,系统自动向它传达一个隐含的参数,该参数是一个指向调用该函数的指针,进而使成员函数知道该对那个对象进行操作。
(2)this指针是c++实现封装的一种体制,它将该对象调用的成员函数连结在一起,
在外面看来,每一个对象都拥有自己的成员函数。
一般状况下都省略符号“this->
”,
而让系统进行默认设置。
6.一个类的对象作为另一个类的成员
(1)类自己就是一种新的数据种类,所以一个类能够作为另一个类得成员。
7.类和对象的性质
(1)对象的性质:
同一类的对象之间能够互相赋值,能够使用对象数组,能够使用指向对象的指针,使用取址运算符&
讲一个对象的地点置于该指针中。
对象之间赋值:
PointA,B;
A.Set(25,25);
B=A
数组对象:
PointA[3]
使用指针和取址运算符:
point*P=&
AP->
Display();
(2)对象能够作为函数参数,假如参数传达采纳传对象值的方式,在被调用函数中对形参所作的改变不影响调用函数中作为实参的对象。
假如传得是对象的引用(地点)
当参数对象被改正时,相应的实参对象也会被改正。
C++建议使用引用,在前面加上
const这样能够防止改正本来的数据成员。
(3)对象作为函数参数时,能够使用对象,对象引用,和对象指针。
形式为:
Voidprint
(Pointa){a.Display;
}//
对象作为参数
(Point&
a
){a.Display;
对象引用作为参数
(Point*p
){p->
Display;
对象指针作为参数
(4)一个对象能够作为另一个类得成员。
8.类的性质
)类自己的成员函数能够使用类所以的成员
)类得对象只好接见公有成员函数,比如输出
x只好使用A.Getx(),不可以使用A.x
(3)其余函数不可以使用类的私有成员,也不可以使用类得公有成员函数,他们只好经过类的对象使用类得公有成员函数。
(4)固然一个类能够包含另一个类的对象,可是这个类也只好经过它被包含的这个类
得对象使用那个类的成员函数,经过成员函数使用数据成员,比如:
Loc.Set(x,y)
(5)不完好类得申明:
只需当使用类产生对象时,才进行内存分派,这类对象的成立过程称为实例化。
(6)有时将类作为一个整体使用而不存取取成员。
(7)不完好类的定义没有类体。
不完好类申明的类不可以实例化
(8)类也能够是空的,不包含任何内容。
(9)类中的一个成员名能够使用类名和作用域运算符来显示的指定,这称为成员名限制。
voidMyClass:
:
set(inti){
MyClass:
number=i//显示的指定接见MyClass类中的标示符number}
9.对象,类和信息
(1)接收对象名,调用操作名和必需的参数是对象传达信息的一般构成部分。
第五章
1.对象成员的初始化
(1)能够在一个类中说明拥有某个类的种类的数据成员,在A类中说明对象成员的一
般形式以下:
ClassA{
类名
1
成员名
1;
2
2;
类名n成员名n
A类得结构函数的形式以下:
A:
A(参数表0):
成员1(参数表1),成员2(参数列表2),成员3(成员列
表3)
其余操作。
(2)静态成员:
简单成员函数是指申明中不含const,volatile,static重点字的函
数,假如类得数据成员或成员函数使用重点字static进行修饰,这样的成员称为静态
成员或静态成员函数,统称为静态成员。
(3)静态数据成员只好说明一次假如在类中仅对静态数据成员进行申明,则一定在文件作用域的某个地方进行定义。
在进行初始化时,一定进行成员名限制。
intTest:
x=25
也能够直接在结构函数中使用类成员限制符对其进行初始化。
Test(inta,intb){Test:
x=a;
n=b}
(4)除静态数据成员的初始化以外,静态成员按照类得其余成员所按照的接见限制,固然还没有成立对象,可是静态成员已经存在。
(5)Static不是函数种类中的一部分,所以在类申明以外定义静态成员函数时,不使
用static。
在类中定义的静态成员函数时内联的。
(6)类的任何成员函数都能够接见静态成员。
因为静态成员函数没有this指针,所以静态成员函数只好经过对象名(或指向对象的指针)接见该对象的非静态成员。
2.友元函数
(1)友元函数能够存取私有成员,公有成员和保护成员。
其实友元函数能够是一个类或函数,还没有定义的类也能够作为友元。
(2)友元函数在类中申明,可是他其实不属于类得成员函数,所以能够在类得外面想一般函数同样定义这个函数。
(3)将成员函数作为友元:
一个类得成员函数(包含结构函数和析构函数)能够经过使用friend说明为另一个类非友元。
(4)将一个类说明为另一个类的友元:
能够讲一个类说明为另一个类得友元,这时整
个类得成员函数均拥有友元函数的性能。
申明形式为:
friendclass类名;
3.Const对象
(1)能够造类中使用const重点字定义数据成员和成员函数或修饰一个对象。
一个
const对象只好接见const成员函数。
(2)常量成员:
常量成员包含常量数据成员,静态常数据成员和常引用。
静态常数据成员仍保存静态成员函数,需要在类外初始化。
常数据成员和常引用只好经过初始化列表来获取初值。
(3)常引用作为函数参数:
使用引用作为函数参数,传得是地点。
有时希望将参数的值传达给函数使用,其实不一样意函数改变对象的值,这是能够使用常引用作为参数。
voidDisplay(constdouble&
r)//这样不会损坏实参
(4)常对象:
在对象名前使用const申明常对象,可是申明时一定同时进行初始化,并且不可以被更新。
语法:
类名const对象名(参数表);
//一定进行初始化
(5)常成员函数:
能够申明一个成员函数为
const
一个const对象能够调用
const函数,但不可以调用非
const成员函数。
Const放在函数申明以前意味着返回值是
常量,可是这不切合语法,一定将重点字
const放在参数表以后,才能说明该函数是
一个const成员函数。
申明常成员函数的格式以下:
种类标示符
函数名(参数列表)const;
为了保证不单申明
const成员函数,并且的确也定义为
const函数,程序员在定义函数
时一定重申const申明。
定义格式以下:
类名:
函数名(参数列表)
const{函数体}const位于函
数参数表以后,函数体以前。
也可用内联函数定义
函数格式以下:
函数名(参数列表)const{函
数体}
在定义成员函数时,函数体以前加上
能够防备覆盖函数改变数据成员
值。
4.指向类成员函数的指针
(1)对象是一个完好的实体,c++包含了指向类成员的指针来封装这一对象。
能够用指针范文内存中给定种类的任何对象,指向类成员的指针则用来接见某个特定类的对
象中给定种类的任何成员。
第六章
1.继承
(1)单调继承的一般形式:
class派生类名:
接见控制基类名{Private:
成员申明列表
(2)派生类的结构函数和析构函数:
定义派生类的结构函数:
派生类名:
派生类名(参数表0):
基类名(参数表)
函数体;
结构函数(包含析构函数)是不被继承的,所以一个派生类只好调用他的直接基类的结构函数。
当定义派生类的一个对象时,第一调用基类的结构函数,对基类成员进行初始化,而后履行派生类的结构函数,假如某个基类还是一个派生类,则这个过程递归进行。
(3)派生类的申明重点字protected以后申明的是类的保护成员,保护成员拥有私有成员和公有成员的两重角色:
对派生类得成员函数而言,它是公有成员,能够被访
问;
而对其余成员函数而言则还是私有成员,不可以被接见。
(4)接见权限和赋值兼容规则:
继承类和基类成员的接见性保持同样。
(5)派生的对象能够赋给基类的对象,派生类的对象能够初始化基类的引用,派生类的对象的地点能够赋给指向基类的指针。
静态成员被继承,继承类和基类共享同一个静态变量。
(6)ias和has-a的差别:
(7)公有继承存取权限表
基类point的成员
Rectangle的成员函
基类对象
a派生类
外面函数
数对point的接见
对象r1
Private成员
不可以接见
Protected成员
protected
Public成员
public
可接见
2.私有派生
(1)经过私有派生,基类的私有和不可以接见成员在派生类中是不可以接见的,而公有和保护成员这时就成了派生类的私有成员,派生类的对象不可以接见继承的基类成员,必
须定义公有的成员函数作为接口。
固然派生类的成员函数可经过自定义的函数接见基类的成员,但将该派生类作
为基类再持续派生时,这时即可使用公有派生,原基类公有成员在新的派生类中也将
是不可以接见的。
(2)保护派生也可使用protected,这类派生都使本来的接见权限降一个级别。
(3)多重继承:
形式:
class
1:
接见控制
2,接见控制
3,,,,,,接见控制
名n{定义派生类自己的成员
3.作用域分辨切合成员名操作符
(1)作用域分辨操作的一般形式以下:
标示符”类名“能够是任一类和派生类名,“类标示符”是该类中生命的任一成员。
(2)派生类支配基类的同名函数
基类的成员和派生类新增的成员都有类作用域,基类再外层,派生类在内层。
假如派生类定义类一个和基类成员函数同名的新成员函数(因为参数不一样属于重载,所以这里是指拥有同样参数表的成员函数),派生类的新成员函数就覆盖了外层的同名成员
在这类状况下,直接使用成员名只好接见派生类的成员函数,只需使用作用域分辨,才能接见基类的同名成员函数。
(3)因为二义性,一个类不可以从同一个类中直接继承最多一次。
假如一定这样,能够使用一此中间类。
二义性检查是在接见权限检查以行进行
的。
所以,成员的接见权限不可以解决二义性问题.那么怎样解决二义性问题,使用作用域分辨符进行存取。
第七章
1.类模板
(1)将一些数据种类从类中分别出来形成的一个通用的数据种类T,并为这个数据类
型T设计一个操作集,在编译器编译时与特定的种类联系起来。
T不是类,天擦很难
过称之为类模板。
(2)类模板的成分及语法:
class在这里是“随意内部种类或用户定义种类”,T可能
是随意结构或类。
类模板的一般申明形式:
template<
类模板参数>
class类名{类
体};
(3)类模板的对象:
类名<
模板实例化参数种类>
对象名(结构函数实参列表)
;
对象名;
、、默认或许无参结构函数
(4)在类体外面定义成员函数时,一定用template重写类模板申明。
一般形式如
下:
模板参数>
返回种类类名<
模板种类参数>
:
成员函数名(函数参数列表){//函数体}
(5)<
是指template的<
>
内使用class(或typename)申明的参
数,结构函数和析构函数没有返回种类。
(6)类模板的派生和继承:
类模板也能够继承,继承的方法与一般的类同样。
申明模
板继承以前,一定从头申明类模板。
模板类的基类和派生类很复杂。
2.向量与泛型算法
(1)在数组生计期内,数组的大小事不会改变的。
向量是一位