- 声明: 告诉编译器名称和类型,但略去细节
extern int x; std::size_t numDigits(int number); class Widget; template<typename T> class GraphNode;
- 定义: 提供编译器声明所遗漏的细节
int x; std::size_t numDigits(int number) //统计整数多少位 { std::size_t digitsSoFar = 1; while ((number /= 10) != 0) { digitsSoFar += 1; } return digitsSoFar; } class Widget { public: Widget(); ~Widget(); }; template<typename T> class GraphNode { GraphNode(); ~GraphNode(); };
- 初始化: 给予对象初始值的过程
- 默认构造函数: 不带任何实参,或者每个实参都有缺省值
class A { public: A(); }; class B { public: explicit B(int x = 0, bool b = true); }; class C { public: explicit C(int x); };
-
-
- explicit: 阻止被用来执行隐式类型转换
-
void doSomething(B object); void Fun0() { B bObj1; doSomething(bObj1); B bObj2(28); doSomething(bObj2); doSomething(28); //不存在从"int"到"B"适当的构造函数 doSomething(B(28)); }
-
- 拷贝构造函数: 以同型对象初始化自我对象
- 拷贝赋值: 从另一个同型对象中拷贝其值到自我对象
class Widget { public: Widget(); Widget(const Widget& rhs); Widget& operator=(const Widget& rhs); }; void hasAcceptableQuality(Widget w); void Fun1() { Widget w1; //默认构造 Widget w2(w1); //拷贝构造 Widget w2 = w1; //拷贝构造 hasAcceptableQuality(w1); //值传递,拷贝构造 w1 = w2;//拷贝赋值 }
标签:00,int,Widget,导读,public,w1,拷贝,class From: https://www.cnblogs.com/BoYuCG/p/18379657