Я создал класс и инициализировал массив объектов через конструктор, почему или почему здесь не вызван конструктор копирования? Это копия элиции?[Prob] Почему конструктор копирования не вызван
#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?
}
Просьба представить компиляционный код ... У вас отсутствуют заголовки, и все ваши конструкторы являются частными. – Holt
И да, это из-за копирования-элиции, попробуйте выполнить компиляцию с '-fno-elide-constructors', если вы используете clang или g ++. – Holt
Возможный дубликат [Что такое оптимизация ссылок и возврат значения?] (Http://stackoverflow.com/questions/12953127/what-are-copy-elision-and-return-value-optimization) – Holt