c++学习笔记——常用关键字简析
c++是c的超集,完全兼容c,但是c++具有更抽象的概念和更高层次的封装。相比c语言,难度跨越很多,但也不再关注更底层的东西,所以有挑战,同时也有让人学习的欲望。c++上一份工作完全没用过,这一份工作虽然是技术支持,但岗位是驻场开发,使用的编程语言就是c++,所以必须引着c++这座大山往上。
先从c++的关键字开始。
原生的c++98的关键字有63个,c++11有73个。这里以c++11为标准。
|
asm
|
do
|
if
|
return
|
typedef
|
|
auto
|
double
|
inline
|
short
|
typeid
|
|
bool
|
dynamic_cast
|
int
|
signed
|
typename
|
|
break
|
else
|
long
|
sizeof
|
union
|
|
case
|
enum
|
mutable
|
static
|
unsigned
|
|
catch
|
explicit
|
namespace
|
static_cast
|
using
|
|
char
|
export
|
new
|
struct
|
virtual
|
|
class
|
extern
|
operator
|
switch
|
void
|
|
const
|
false
|
private
|
template
|
volatile
|
|
const_cast
|
float
|
protected
|
this
|
wchar_t
|
|
continue
|
for
|
public
|
throw
|
while
|
|
default
|
friend
|
register
|
true
|
|
|
delete
|
goto
|
reinterpret_cast
|
try
|
c++11新增的有:
| alignas | char16_t | constexpr | noexcept | static_assert |
| alignof | char32_t | decltype | nullptr | thread_local |
asm关键字用于在c++中包含汇编代码块,__asm关键字启动内联汇编,并且可以用在任何的c/c++语法正确的地方。
在使用时,在__asm后接大括号包含着的汇编代码段(一组汇编指令)或一条汇编指令。
auto关键字和c中的auto关键字类似,声明变量的存储类型。如不在任何类、结构、函数、块中的变量为全局变量,保存在静态区且生命周期全局;将在这些范围中的变量声明为局部变量,保存在栈区,且类/结构/函数/块被释放时,随之释放。
bool类型是c++内置数据类型,有两种值:true或者false,常用于函数或表达式执行成功与否的判断。
break能够跳出一层switch语句和一层循环语句,对if无效。continue能跳出本次循环,到下一次循环的起始位置,对switch/if无效。goto和用户定义的标号结合使用,使用goto能无条件跳出到定义的标号所在的位置。return关键字能返回一个状态给调用该函数的位置。
switch、case、default语句结构用于实现程序分支,switch后可接整型(包含字符型)、枚举和重载了强制转换整型枚举函数的类类型的变量/常量/表达式。不能是实型、指针和不能转换为int类型的值。case后只能接常量。当case后的标志没有一条能和switch后的表达式/常量/变量匹配,则执行default语句。
if和else是判断语句,if后接表达式和变量,为真则执行if后缀着的语句块或者语句,为假则跳过该语句块或语句。
try和catch一起使用,用来实现c++中的异常检测和处理。try标示检测异常的语句块的开始,catch标示结束,throw后缀异常检测的类型。
char、int、short、double、float、long、void和bool一样都是c++内置的数据类似型。
wchar_t之前没见过,要拿出来说下。wchar_t关键字用来定义宽字符型变量。其字面量一‘L'开始。
class关键字用于定义类类型。
const标识只读变量,修饰指针时,const char *p中const修饰*p,char *const p中const修饰p。static修饰静态变量。
new、delete用来在堆上申请释放内存。
*_cast关键字用来强制类型转换。const_cast去const,dynamic_cast动态类型转换,需要运行时支持(待解释)。static_cast区static。reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。按bit位重新转换。
do...while和while都是循环语句,do...while执行一次循环语句再进行条件判断,while先进行判断。do...while后要加;
for也是循环语句。形式为for(1;2;3)。括号中1为初始化表达式,2为判断表达式,3一般用作循环变量自加。
enum、struct、union分别为枚举类型,结构体类型,共用体类型。都为构造类型。struct和class的区别在于成员默认的级别,struct为public,class为private
explicit修饰构造函数为显示构造函数,显示构造函数不可被用于拷贝赋值,而只能为直接构造。
extern关键字可以声明外部类型、变量和函数,export声明外部的模板类。
friend关键字用来声明友元类或者友元函数时使用。友元这一概念在后面会加以记录。
inline函数即内联函数,在类中直接定义的函数默认为内联函数。
mutable意为“可变的,易变的”,具体用法后面加以详述。
using、namespace用来声明命名空间以供当前模块使用。
private、protected、public声明了类中成员的级别,和能否被外部磊/函数所使用。privatef成员可以被该类、子类和友元类的方法访问。protected成员可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问;基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员能被类中的。也就是说protected成员在本类中的级别如同private成员一致,只能被本类的方法使用,不能通过成员访问被本类的对象使用。public成员既可被本类的方法使用,也可通过成员访为被其对象调用。
signed、unsigned标识有符号和无符号变量。
template声明一个模板类。
virtual声明虚函数。
volatile可变的,抗优化。

浙公网安备 33010602011771号