复制构造函数copy constructor、
赋值操作符 operator =、
析构函数destructor:不管类是否定义了自己的析构函数,编译器都自动执行类中非static数据成员的析构函数。
复制构造函数、赋值操作符、析构函数 总称为复制控制(copy control)。编译器自动实现这些操作,但类也可以定义自己的版本。
下面代码所使用copy contructor的地方有:
class Point{ public: Point(){} Point(const Point & p){ static int i=0; cout<<++i<<"call Point copy constructor."<<endl; this->str=p.str; } Point(string s):str(s){} string get_str(){return this->str;} private: string str; }; Point global; Point foo_bar(Point arg){ //1 use Point local=arg; //2 use Point *heap=new Point(global); //3 use *heap=local; //not use Point pa[4]={local,*heap}; //4 use 5 use return *heap; //6 use } int main(int argc, char* argv[]) { Point p("xy"); foo_bar(p); return 0; }