欢迎访问mehome的博客

Tomorrow is another day.
Fork me on GitHub

C++基础

一、简述

C++容器append方法,把对象放入容器会调用默认复制构造函数

函数形式:MyClass(const MyClass& obj);


二、默认构造函数

头文件:

  1 class MyClass
  2 {
  3 public:
  4     MyClass();
  5     MyClass(MyClass& obj);
  6     MyClass(const MyClass& obj);
  7 
  8     ~MyClass();
  9     MyClass & operator =(MyClass&);
 10 
 11 private:
 12 
 13 };

CPP:

  1 MyClass::MyClass()
  2 {
  3     qDebug() << "gz class" << endl;
  4 }
  5 
  6 MyClass::MyClass(MyClass& obj)
  7 {
  8     qDebug() << "gz &class" << endl;
  9 
 10 }
 11 
 12 MyClass::MyClass(const MyClass& obj)
 13 {
 14     qDebug() << "gz const &class" << endl;
 15 
 16 }
 17 
 18 MyClass::~MyClass()
 19 {
 20     qDebug() << "xg class" << endl;
 21 
 22 }
 23 
 24 MyClass & MyClass::operator=(MyClass&)
 25 {
 26     qDebug() << "operator new (=)" << endl;
 27     return *this;
 28 }


测试MyClass在容器中调用哪个默认构造:

  1 MyClass c;
  2 QList<MyClass> a;
  3 a.append(c);
  4 

输出结果:

  1 gz class
  2 
  3 gz const &class
  4 
  5 xg class
  6 
  7 xg class
posted @ 2022-07-04 01:53  mehome  阅读(25)  评论(0编辑  收藏  举报