static
1: C
语言static的功能适应于C++
;
2: static
修饰c++
的静态成员:
权限: static
数据类型 名称;
相当于类::静态变量,它是一个纯粹的变量,全局唯一,分配在数据段上;
3: static
修饰c++
的静态函数
相当于类::函数,它是一个纯粹的函数,与类型实例无关,所以也不会有this指针,不能访问实例的数据成员。
4: 权限修饰符号决定了访问的权限;
-
c++
也可以有独立的函数; -
static
-
static
也是只能在模块内部使用; -
static
静态全局变量,和静态局部变量; -
c++
, 静态数据成员,静态成员函数,
-
- 静态数据成员:
- 一个全局变量:类名::变量名,全局变量–>数据段上;
- 权限修饰:
-
public
,外部可以使用, - 使用静态全局变量,和普通的变量不一样,对象实例;
- 在类里声明,在外部定义
- private只能内部使用,……..
-
静态成员函数
- 实际上就是一个普通的c++函数,类名::函数名
- 它和普通的成员函数是不一样;
- 类的实例.成员函数()–>实例–>
this
,; - 静态函数不需要类的实例,当然在静态函数里面也没有所谓的this
- 如果是在类的内部,可以省略,但是不建议这样的写法,因为代码是给开发人员看的
- 这样写开发人员就能够知道是个静态成员变量;
- 如果是声明在外面;
const
1: C
语言里面的const
也同样适用于c++
;
2: C++
语言里面const
修饰成员函数,表示该函数不会修改任何数据成员,一旦你一个const
修饰的函数里修改数据成员,编译器会报错;
-
const
:指的是这个函数里面,不会修改任何实例对象的数据成员,编译器会强制你不去修改这个,一旦修改,编译器马上报错; - 减少代码维护的负担,如果你不会有成员变量的改变,一定写上
const
-
const
函数实现在外部 要加上const
-
-
c++函数调用
1: C++
调用成员函数:
隐式调用:实例.成员函数;
显示调用: 实例.类::成员函数;
2: C++
普通函数, 和C
的语法是一样的,但是参数传递不一样,C++
的普通的函数调用叫做 stdcall
,
C的函数调用叫做__cdecl
3: C++的成员函数调用,要先传递this指针,所以叫做thiscall
4: C++
调用C的函数,加上 extern
“C” {}, 使用C的方式来调用;
4: __cplusplus
宏,区别编译器是C或C++;
6:C函数的代码模块供c/c++调用的头文件定义方式;
- c++函数调用,实例.成员函数;
- 传递this指针,–>
thiscall
方式 - c++可以调用普通的函数;
-
stdcall
方式 - c++调c的函数,强制要求c++编译器按照c的方式调用;
-
__cdecl
方式 - c语言编写的代码模块,要给c++使用怎么办呢?
-
__cplusplus
宏是C++的编译器的判定 - C编译器来include,还是C++编译器来include
- 即可给c编译器用还可以给c++编译器使用 -
名字空间
1: 名字空间的作用: 多方合作的时候,难免会有重名,名字空间能解决这个问题;
2: 定义名字空间 namespace
名字 { C++代码定义在这个主体}
3: 使用名字空间:
显示的使用名字空间::xxxxxx
using namespace XXXXXX, 添加名字空间到搜索路径,在查找的时候,就会到你设置的名字空间下查找;
4: 名字空间的意义: 让我们的命名,更规范,更合理, 如果我们写底层库给别人使用,一定要
加上名字空间,这个是对自己负责,也是对别人负责;
- 每个厂商有自己的名字空间,这样的话提供给其它人使用的时候,不会和陌生的厂商冲突;
- 每次在前面加上名字空间,我们觉得有点麻烦;
- 隐式的使用;
-
using namespace
XXXX;
总结
1: 理解类的static
关键字的作用;
2: 理解类的const
关键字的作用;
3: 掌握c++的函数调用和C的函数调用的方式;
4: 掌握_cplusplus
宏
5: C++调用C代码;
6: 掌握名字空间;