类的转换函数与对象初始化合并在一条语句会发生什么?

#include <iostream>
using namespace std;

class A
{
private:
  int m_a;
public:
  A(int a)
  {
    m_a = a;
  }
};

int main()
{
  A apple = A(4);
  cout << &a << endl;

  return 0;
}

原以为,A(4)会调用类型转换函数A(int a){m_a = a;} , 然后用A(4)给apple初始化时再调用未定义copy构造(为什么会认为调用copy构造呢?);

事实上,单步调试发现,会走到第一个构造函数,记一下这个this指针,然后回到主函数,看看apple的地址,是和刚才的this指针相同,说明给apple初始化的就是第一个构造函数,将上面两步合二为一了;(希望有不同理解的同学留个言,先谢过~~)

猜你喜欢

转载自www.cnblogs.com/IvanKeller/p/10847440.html
今日推荐