01_复制构造函数.pdfVIP

  • 0
  • 0
  • 约2.87千字
  • 约 11页
  • 2017-07-15 发布于浙江
  • 举报
01_复制构造函数

信息科学技术学院 程序设计实习 郭炜 微博 /guoweiofpku /u/3266490431 刘家瑛 微博 /pkuliujiaying 1 信息科学技术学院 《程序设计实习》 郭炜 刘家瑛 复制构造函数 (copy constructor) 2 基本概念(教材P183) 只有一个参数,即对同类对象的引用。 形如 X::X( X )或X::X(const X ), 二者选一 后者能以常量对象作为参数 如果没有定义复制构造函数,那么编译器生成默认 复制构造函数。默认的复制构造函数完成复制功能。 3 基本概念 class Complex { private : double real,imag; }; Complex c1; //调用缺省无参构造函数 Complex c2(c1);//调用缺省的复制构造函数,将c2 初始化成和c1一样 4 基本概念 如果定义的自己的复制构造函数, 则默认的复制构造函数不存在。 class Complex { public : double real,imag; Complex(){ } Complex( const Complex c ) { real = c.real; imag = c.imag; cout “Copy Constructor called”; } }; Complex c1; Complex c2(c1);//调用自己定义的复制构造函数,输出Copy Constructor called 5 基本概念 不允许有形如 X::X( X )的构造函数。 class CSample { CSample( CSample c ) { } //错,不允许这样的构造函数 }; 6 复制构造函数起作用的三种情况 1)当用一个对象去初始化同类的另一个对象时。 Complex c2(c1); Complex c2 = c1; //初始化语句,非赋值语句 7 复制构造函数起作用的三种情况 2)如果某函数有一个参数是类A 的对象, 那么该函数被调用时,类A 的复制构造函数将被调用。 class A { public: A() { }; A( A a) { cout Copy constructor called endl; } }; 8 复制构造函数起作用的三种情况 2)如果某函数有一个参数是类A 的对象, 那么该函数被调用时,类A 的复制构造函数将被调用。 void Func(A a1){

文档评论(0)

1亿VIP精品文档

相关文档