C++レプリケーション構築オペレータ呼び出し

910 ワード

主に説明を記録するためです.
class A;
A a;
A b = a;//これはレプリケーションコンストラクション関数を呼び出しますか?それとも、まず構築してから、割り当てオペレータを呼び出しますか?結果は前者です.
テストコード:
#include 
#include 

class A {
  public:
    A() {
      printf("%s
", "A constructor"); } A(const A &a) { this->data_ = a.data_; printf("%s
", "A copy constructor"); } A& operator=(const A &a) { this->data_ = a.data_; printf("%s
", "A operator="); } private: int data_; }; int main(int argc, char **argv) { A a; // A constructor printf("-------------------
"); A b = a; // A copy constructor printf("-------------------
"); A c; // A constructor c = a; // A operator= printf("-------------------
"); return 0; }