Из предыдущего сообщения я узнал, что существует два способа, по крайней мере, объявить массив без стандартных конструкторов. Как этоОдин вопрос о массиве без конструктора по умолчанию в C++
class Foo{
public:
Foo(int i) {}
};
Foo f[5] = {1,2,3,4,5};
Foo f[5] = {Foo(1), Foo(2), Foo(3), Foo(4), Foo(5)};
Я также узнал, что первые из них будут строить объект с помощью параметра напрямую, а второй конструктор копирования используется здесь. Однако, когда я тестирую код ниже. Я делаю конструктор копирования закрытым. Я ожидаю увидеть разницу в использовании конструктора копий. Но я не ожидал этого. Ни одно из двух объявлений не работает.
class Foo{
public:
Foo(int i) {}
private:
Foo(const Foo& f) {}
};
int main(){
Foo f[5] = {1,2,3,4,5};
Foo f[5] = {Foo(1), Foo(2), Foo(3), Foo(4), Foo(5)};
}
Может кто-нибудь объяснить мне, почему это происходит?
@skydoor: Теперь вы задали ровно 100 вопросов :-) –