C++之拷贝构造函数

来源:互联网 发布:mac来自身份不明 编辑:程序博客网 时间:2024/06/06 07:12

拷贝构造函数:是一种特殊的构造函数,其形参的本类的对象。

作用:用一个已知的对象去初始化另一个同类对象。

性质:

第一,因为拷贝构造函数也是一种构造函数,所以其函数名也与类名相同,并且也没有返回值类型。

第二,拷贝构造函数只有一个参数,并且是同类对象的引用。

第三,每个类必须有一个拷贝构造函数。可以自定义拷贝构造函数,如果程序员没有自己定义,系统会自动生成一个缺省的拷贝构造函数。


一、自定义的拷贝构造函数。

  自定义的拷贝构造函数,可以有选择的、有变化地赋值。

  格式:类名::类名(类名&  对象名){   }

示例:

class Project{    private:    double math;    double english;    public:    Project(double m,double e);    Project(Project& p);    ~Project();    void show();};Project::Project(double m,double e){    math=m;    english=e;}Project::Project(Project& p){    math=2*p.math;    english=2*p.english;}Project p1(75.5,68.9);p1.show();Project p2=p1;p2.show();Project p3(p2);p3.show();


二、缺省的拷贝构造函数。

如果没有自定义的拷贝构造函数,系统会生成一个缺省的拷贝构造函数,没有改变的赋值给同类的对象。

示例:

class Project{    private:    double math;    double english;    public:    Project(double m,double e);    ~Project();    void show();};Project::Project(double m,double e){    math=m;    english=e;}Project p1(75.5,68.9);p1.show();Project p2=p1;p2.show();Project p3(p2);p3.show();


三、调用拷贝函数的三种情况。(自己感觉应该是调用缺省的拷贝构造函数)

第一,当用一个对象初始化另一个同类的对象时。

第二,当函数的形参是类的对象,调用函数,进行形参和实参结合时。

第三,当函数的返回值是对象,函数执行完成,返回对象时。

原创粉丝点击