[问题]为什么复制构造函数没有被调用

时间:2016-06-29 09:34:22

标签: c++ copy-constructor copy-elision

我创建了一个类并通过构造函数初始化了一个对象数组,为什么或为什么不在这里调用复制构造函数?是复制省吗?

#include<iostream>
#include<stdio.h>

class ABC
{
    int x, y;
public:
    ABC()
    {
        x = 0;
        y = 0;
    }
    ABC(int a,int b)
    {
        x = a;
        y = b;
    }
    ABC(const ABC &obj)
    {
        std::cout<<"Copy called";
    }
};

int main()
{
    ABC obj[2] = {ABC(), ABC(5,6)}; //copy elision or copy constructor?
}

1 个答案:

答案 0 :(得分:0)

你是对的,它的复制省略,编译器进行优化并创建对象代替数组中分配的内存,因此复制构造函数不会被调用。