发表时间:2022-03-25来源:网络
主要总结平时可能遇到,但是不常用的语法现象。 主要分析C/C++标准语法,做到平台无关。
基本语法类
explicit 关键字:如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,这叫隐式转换。
explicit关键字用来修饰类构造函数,使其失去隐式转换功能。使用方法见代码如下:

代码
class MyClassMyClass obj
= 10; //ok,convert int to MyClassMyClass obj
= 10; //err,can't non-explict convert
2. const 关键字:
对于const在C中的用法,这里部分转载了这篇文章。
在C中,const关键字的用途就是使函数操作时不改变其修饰的变量的值。平常我们见得多的const用法有如下几种,似乎可以总结为“就近原则”:即const最靠近其右边哪个变量,就说明那个变量为常量。”

代码
const int *p1; /* p1所指向的int变量值不可改变,为常量,但可以改变p1指针的值 */const 在 c++中的使用,主要涉及到类对象,及类成员函数,需要注意以下几点:
声明为const的对象只能访问类中声明为const的成员函数,不能调用其它成员函数. const 成员函数的声明格式为: 类型说明符 函数名(参数表)const,例: void print(int i) const;const是函数类型的一个组成部分,因此在实现部分也要带const关键字. const成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数,另外C中也有const函数,该函数不能改变在该函数外面声明的变量。
3. inline 关键字
inline的作用相当于宏,编译器执行替换工作(宏是用预处理器)。inline使用要注意几点
在类声明中定义函数,会隐式的成为inline函数。 在头文件中定义函数,需要将其声明为inline,否则会出现链接时多重定义的错误。 inline是向编译器发出的请求,而不是命令,编译器有权不对复杂的函数执行inline化。 对类的私有成员的读取函数inline化是不错的选择。4. # 和 ##
#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。
#define Str(x) #xchar *a = Str(abc);
##作用为将括号内的字符串和括号外的字符串联结起来
#define Z(nVar) master_##nVar
Z(a);
5. 左值与右值
左值就是一个可被存储的单元,右值就是一个可被读取的数据。C++标准中,对于int a, b;来说,a和b都是左值。
但由于“a = b”这种赋值表达式中,赋值号右边需要的是个右值,所以当你把一个左值放上去的时候,编译器会把它隐式转换成一个右值,即取用那个变量所对应的存储单元中的数值。
而相反,假如你放上去的本来就是个右值,比如:
a = 5;
a = sizeof(a);
a = strlen( "abcde ");
等等,那就没有任何隐式转换发生。
在C++中
(x++)不是左值,&(x++)会报错,(++x)是左值。而在C中,二者皆不能通过,因为表达式完全求值,二者都是右值。
模板语法类
模板语法可能是最恐怖的部分。
模板的特化模板的特化是当模板的范型功能成为设计的障碍时采取的一种策略。它可以看成对一般模板的重载,以满足特定需求(例如对某种特殊类型要求进行不一般化的处理)。其基本用法举例如下:

代码
template
其中template是不能省略的,它指明了一下的内容仍然是模板的定义,而不是普通函数。
上一篇:C++学习笔记(一)
苏宁微店卖家版app(苏宁推客)下载v9.8.40 安卓最新版
57.19MB |生活服务
机友邦工程机械网官方版app下载v4.0.4 安卓版
88.56MB |系统工具
苏宁微店客户端(改名苏宁推客)下载v9.8.40 安卓版
57.19MB |生活服务
优腿商家端app下载v1.23.5 安卓版
34.13MB |系统工具
龙湖物业app下载v1.20.0 安卓版
84.54MB |生活服务
moon月球手机版下载v2.6.5 安卓版
51.55MB |生活服务
邻里掌柜app官方版下载v8.12.3 安卓版
151.25MB |生活服务
药采采app官方版下载v2.6.3 安卓版
31.88MB |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14