class B { public: explicit B(int x = 0,bool b = true); //default构造函数 };
explicit可以阻止用来执行隐式类型转换,但是可以用来进行显式类型转换。
void doSomething (B bObject); doSometing(B(28));//使用B的构造函数将int显式转换(cast)为一个B以促成此一调用
copy构造函数被用来“以同型对象初始化自我对象”,copy assignment操作符被用来“从另一个同型对象中拷贝其值到自我对象。”
声明式(declaration)是告诉编译器某个东西的名称和类型(type),但略去细节。
如:
extern int x;//object 声明式
std::size_t numDigits(int number);//function声明式
class Widget;//class
template<typename T>
class GraphNode;//template 声明式
每个函数的声明揭示其签名式(signature),也就是参数和返回类型。一个函数的签名等同于该函数的类型。numDigits函数的签名是std::size_t (int).c++对签名式的官方定义是并不包含函数的返回类型。
定义式(definition)任务是提供编译器一些声明式所遗漏的细节。对对象而言,定义式是编译器为此对象拨发内存的地点。对function function template而言,定义式提供了代码本体。对class或class template而言,定义式列出他们的成员。