导读
声明式
extern int x;
std::size_t numDigits(int num);
class Person;
template<typename T>
class GraphNode;
签名式
std::size_t (int); //这个函数获得一个int,返回一个size_t
定义式
int x;
std::size_t numDigits(int num)
{
std::size_t digitSoFar = 1;
while((num/10) != 0) ++digitSoFar;
return digitSoFar;
}
class Person{
public:
Person();
~Person();
};
template<typename T>
class GraphNode{
public:
GraphNode();
~GraphNode();
};
初始化(通常由构造函数执行,所谓默认构造函数就是可以被调用但不含实参者)
class A{
public:
A();
};
------------------------------------------------------------------------
class B{
public:
explicit B(int x = 0; bool y = true); //explicit阻止隐式类型转换,但仍可被显式类型转换
};
------------------------------------------------------------------------
class C{
public:
explicit C(int x); //这个就不是default默认构造函数
};
------------------------------------------------------------------------
class D{
public:
D(); //默认构造函数
D(const D& d) //拷贝构造
D& operator=(const D& d)//拷贝赋值构造
}
D d1; //默认
D d2(d1); //拷贝
d1 = d2; //拷贝赋值
D d3 = d1; //拷贝!!!! 区别就在于,新创建的d3是拷贝,已经存在的是拷贝赋值
class作为入参的时候,尽量不要值传递(本质上会用拷贝构造),用引用传递