1. explicit:(只能)用在带单个参数的构造函数前,告诉编译器,不能使用该构造函数进行隐式类型转换。如果确实想转换,则必须采用显式的类型转换方式来进行。从而避免了可能出现的问题和额外的调用开销。
class A
{
public:
A();
explicit A(int i); //这样就会在创建对象时不能隐士的转换了 (存在explicit时 A a = 10;是不对的 ;A b(10);这样是对的) 去掉了explicit 关键字就可以通过。
//这个关键字阻止了int 型 隐士转换成 类A
A(A &a);
~A();
int i;
void fun1();
};
2. export: 为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准C++新增加的关键字export(导出/出口/输出)