C++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,explicit构造函数是用来防止隐式转换的。
隐式转换:
如果C++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象。
如下面所示:
C++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,explicit构造函数是用来防止隐式转换的。
隐式转换:
如果C++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象。
如下面所示:
参考文章:C++虚函数表剖析
参考文章:C++虚函数表分析
参考文章:C++中基类的析构函数为什么要用virtual虚析构函数
C++ 中的多态是用虚函数实现的:子类覆盖(重写)父类的虚函数,然后声明一个指向子类对象的父类指针,如 Base* base = new Derived(); 当调用base->func(),调用的是子类的Derived::func()。
1 | class Base |
这种机制使用了一种动态绑定的技术,技术核心是虚函数表(简称虚表)。

数组名代表的数组的首地址,通过这个首地址我们可以对这块内存区域进行访问,因为数组分配空间是按照顺序依次分配的。
1 | int a[] = {1, 2, 3, 4, 5}; |
输出:
1 | show array a : 1 2 3 4 5 |
1 | int a[] = {1, 2, 3, 4, 5}; |