C++关键字及说明解释.docx
- 文档编号:8783254
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:16
- 大小:24.86KB
C++关键字及说明解释.docx
《C++关键字及说明解释.docx》由会员分享,可在线阅读,更多相关《C++关键字及说明解释.docx(16页珍藏版)》请在冰点文库上搜索。
C++关键字及说明解释
C++关键词
asm
auto
bad_cast
bad_typeid
bool
break
case
catch
char
class
const
const_cast
continue
default
delete
do
double
dynamic_cast
else
enum
except
explicit
extern
false
finally
float
for
friend
goto
if
inline
int
long
mutable
namespace
new
operator
private
protected
public
register
reinterpret_cast
return
short
signed
sizeof
static
static_cast
struct
switch
template
this
throw
true
try
type_info
typedef
typeid
typename
union
unsigned
using
virtual
void
volatile
wchar_twhile
(1)asm
asm已经被__asm替代了,用于汇编语言嵌入在C/C++程序里编程,从而在某些方面优化代码.虽然用asm关键词编译时编译器不会报错,但是asm模块的代码是没有意义的.
(2)auto
这个这个关键词用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。
这个关键词不怎么多写,因为所有的变量默认就是auto的。
(3)bad_cast,
const_cast,
dynamic_cast,
reinterpret_cast,
static_cast
关于异常处理的,还不是太了解..
(4)bad_typeid
也是用于异常处理的,当typeid操作符的操作数typeid为Null指针时抛出.
(5)bool
不用多说了吧,声明布尔类型的变量或函数.
(6)break
跳出当前循环.Thebreakstatementterminatestheexecutionofthenearestenclosinglooporconditionalstatementinwhichitappears.
(7)case
switch语句分支.Labelsthatappearafterthecasekeywordcannotalsoappearoutsideaswitchstatement.
(8)catch,throw,try
都是异常处理的语句,Thetry,throw,andcatchstatementsimplementexceptionhandling.
(9)char
声明字符型变量或函数.
(10)class
声明或定义类或者类的对象.Theclasskeyworddeclaresaclasstypeordefinesanobjectofaclasstype.
(11)const
被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
它可以修饰函数的参数、返回值,甚至函数的定义体。
作用:
1.修饰输入参数
a.对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const引用传递”,目的是提高效率。
例如将voidFunc(Aa)改为voidFunc(constA&a)。
b.对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。
否则既达不到提高效率的目的,又降低了函数的可理解性。
例如voidFunc(intx)不应该改为voidFunc(constint&x)。
2.用const修饰函数的返回值
a.如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const修饰的同类型指针。
如对于:
constchar*GetString(void);
如下语句将出现编译错误:
char*str=GetString();//cannotconvertfrom'constchar*'to'char*';
正确的用法是:
constchar*str=GetString();
b.如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const修饰没有任何价值。
如不要把函数intGetInt(void)写成constintGetInt(void)。
3.const成员函数的声明中,const关键词只能放在函数声明的尾部,表示该类成员不修改对象.
说明:
consttypem;//修饰m为不可改变
示例:
typedefchar*pStr;//新的类型pStr;
charstring[4]="abc";
constchar*p1=string;
p1++;//正确,上边修饰的是*p1,p1可变
constpStrp2=string;
p2++;//错误,上边修饰的是p2,p2不可变,*p2可变
同理,const修饰指针时用此原则判断就不会混淆了。
constint*value;//*value不可变,value可变
int*constvalue;//value不可变,*value可变
const(int*)value;//(int*)是一种type,value不可变,*value可变
//逻辑上这样理解,编译不能通过,需要tydefint*NewType;
constint*constvalue;//*value,value都不可变
(12)continue
结束当前循环,开始下一轮循环.Forcestransferofcontroltothecontrollingexpressionofthesmallestenclosingdo,for,orwhileloop.
(13)default
switch语句中的默认分支.Noneoftheconstantsmatchtheconstantsinthecaselabels;adefaultlabelispresent.Controlistransferredtothedefaultlabel.
(14)delete
经常用于动态内存分配的语句,Deallocatesablockofmemory.
(15)do
在do-while循环结构中开始循环体.Executesastatementrepeatedlyuntilthespecifiedterminationcondition(theexpression)evaluatestozero.
(16)double
声明双精度变量或函数.
(17)else
条件语句否定分支(与if连用).
(18)enum
声明枚举类型.Thenameofeachenumeratoristreatedasaconstantandmustbeuniquewithinthescopewheretheenumisdefined.
(19)explicit
explicit主要用于"修饰"构造函数,使得它不用于程序中需要通过此构造函数进行"隐式"转换的情况,防止不必要的隐式转化.;指定此关键字,需要隐式转换方可进行的程序将会不能通过.而可通过强制转换使它没有用.
Thiskeywordisadeclarationspecifierthatcanonlybeappliedtoin-classconstructordeclarations.Anexplicitconstructorcannottakepartinimplicitconversions.Itcanonlybeusedtoexplicitlyconstructanobject.
(20)export
MSDN只说Theexportkeywordisnotsupportedontemplates.一种导出语句吧..
(21)extern
extern意为“外来的”···它的作用在于告诉编译器:
有这个变量,它可能不存在当前的檔中,但它肯定要存在于工程中的某一个源文件中或者一个Dll的输出中。
声明变量是在其它文件中声明(也可以看做是引用变量).Objectsandvariablesdeclaredasexterndeclareanobjectthatisdefinedinanothertranslationunitorinanenclosingscopeashavingexternallinkage.
(22)false,true
bool类型的两个枚举值.
(23)float
声明浮点型变量或函数.
(24)for
一种循环语句(可意会不可言传).Usetheforstatementtoconstructloopsthatmustexecuteaspecifiednumberoftimes.
(25)friend
声明友元函数或者类.Thefriendkeywordallowsafunctionorclasstogainaccesstotheprivateandprotectedmembersofaclass.
(26)goto
无条件跳转语句.Performsanunconditionaltransferofcontroltothenamedlabel.
(27)if
条件语句.Controlsconditionalbranching.常与else一起用.
(28)inline
声明定义内联函数,编译时将所调用的代码嵌入到主函数中.Theinlinespecifiersinstructthecompilertoinsertacopyofthefunctionbodyintoeachplacethefunctioniscalled.
(29)int
声明整型变量或函数.
(30)long
声明长整型变量或函数.
(31)mutable
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。
在C++中,mutable也是为了突破const的限制而设置的。
被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。
但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。
Thiskeywordcanonlybeappliedtonon-staticandnon-constdatamembersofaclass.Ifadatamemberisdeclaredmutable,thenitislegaltoassignavaluetothisdatamemberfromaconstmemberfunction.
(32)namespace
如同名字一样的意思,NameSpace:
名字空间,之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了,为了解决这个问题,引入了名字空间这个概念,通过使用namespacexxx;你所使用的库函数或变量就是在该名字空间中定义的.这样一来就不会引起不必要的冲突了.命名空间是用来组织和重用代码的编译单元。
所谓namespace,是指标识符的各种可见范围。
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一:
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用
二:
所谓namespace,是指标识符的各种可见范围。
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。
例如std:
:
ostream而不是ostream。
完整语句如下:
std:
:
cout< : hex<<3.4< : endl; 2、使用using关键字。 usingstd: : cout;usingstd: : endl;usingstd: : cin;以上程序可以写成cout< : hex<<3.4< 3、最方便的就是使用usingnamespacestd;例如: #include#include#includeusingnamespacestd;这样命名空间std内定义的所有标识符都有效(曝光)。 就好像它们被声明为全局变量一样。 那么以上语句可以如下写: cout< 所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中。 但这又会带来了一个新问题。 无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。 所以就有了和等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。 命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h" Dynamicallyimportsanelementbehaviorintoadocument. (33)new 动态内存分配.Allocatesmemoryforanobjectorarrayofobjectsoftype-namefromthefreestoreandreturnsasuitablytyped,nonzeropointertotheobject. (34)operator 它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解: 一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。 Theoperatorkeyworddeclaresafunctionspecifyingwhatoperator-symbolmeanswhenappliedtoinstancesofaclass. (35)private 类私有函数和数据成员的标示.Whenprecedingalistofclassmembers,theprivatekeywordspecifiesthatthosemembersareaccessibleonlyfrommemberfunctionsandfriendsoftheclass.Thisappliestoallmembersdeclareduptothenextaccessspecifierortheendoftheclass. (36)protected 具有protected访问控制级别的成员是半公开的,外界无法直接访问这个控制级别的成员,但是派生类的base指针可以获得访问能力。 Theprotectedkeywordspecifiesaccesstoclassmembersinthemember-listuptothenextaccessspecifier(publicorprivate)ortheendoftheclassdefinition. (37)public public在程序语言中基本都表示全局变量或者全局函数,他的本意是“公共的”的意思,他表示某个变量或者函数是全局函数 Whenprecedingalistofclassmembers,thepublickeywordspecifiesthatthosemembersareaccessiblefromanyfunction.Thisappliestoallmembersdeclareduptothenextaccessspecifierortheendoftheclass. (38)register 声明积存器变数.Theregisterkeywordspecifiesthatthevariableistobestoredinamachineregister,ifpossible.这个关键词命令编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,从而提高效率。 register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。 首先,register变量必须是能被CPU所接受的类型。 这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度。 不过,有些机器的寄存器也能存放浮点数。 其次,因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址。 由于寄存器的数量有限,而且某些寄存器只能接受特定类型的数据(如指针和浮点数),因此真正起作用的register修饰符的数目和类型都依赖于运行程序的机器,而任何多余的register修饰符都将被编译程序所忽略。 在某些情况下,把变量保存在寄存器中反而会降低程序的运行速度。 因为被占用的寄存器不能再用于其它目的;或者变量被使用的次数不够多,不足以装入和存储变量所带来的额外开销。 (39)return 子程序返回语句(可以带参数,也看不带参数),返回函数调用点.Terminatestheexecutionofafunctionandreturnscontroltothecallingfunction(or,inthecaseofthemainfunction,transferscontrolbacktotheoperatingsystem).Executionresumesinthecallingfunctionatthepointimmediatelyfollowingthecall. (40)short 声明短整型变量或函数. (41)signed,unsigned 声明有符号类型变量或函数;声明无符号类型变量或函数. (42)static 声明静态变量.Whenmodifyingavariable,thestatickeywordspecifiesthatthevariablehasstaticdurationinitializesitto0unlessanothervalueisspecified. (43)struct 声明结构体变量或函数.struct类型是一种值类型,通常用来封装小型相关变量组. (44)switch 选择 Allowsselectionamongmultiplesectionsofcode,dependingonthevalueofanintegralexpression. (45)template 模板template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个,每个形参前都要加class<类型形参表>可以包含基本数据类型可以包含类类型. 函数模板的一般形式如下: Template 模板定义: 模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。 模版可以分为两类,一个是函数模版,另外一个是类模版。 Thetemplatedeclarationspecifiesasetofparameterizedclassesorfunctions. (46)this 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。 this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。 也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。 一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用return*this;另外一种情况是当参数与成员变量名相同时,如this->n=n(不能写成n=n)。 Thethispointerisapointeraccessibleonlywithinthenonstaticmemberfunctionsofaclass,struct,oruniontype. (47)typedef 用以给数据类型取别名.Introduces
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 关键字 说明 解释