В настоящее время сталкиваюсь с проблемой с этим вопросом в моей домашней работе.Я считаю, что только 4,7 неверны (в Visual Studio они не выдают ошибку).Но я честно не уверен, почему они единственные.Так как 3 работы, я предположил, что они будут работать, но это не так.Любой совет?
struct A {
double x;
A(double x = 1) : x(x) { }
};
struct B {
double x;
B(A a = 2.0) : x(a.x) { }
};
struct C {
double x;
C(B b = B(3)) : x(b.x) { }
};
int main() {
A a; // (1)
A a = 4; // (2)
B b; // (3)
B b = 5; // (4)
B b(a); // (5) (a is an object of class A)
C c; // (6)
C c = 6.0; // (7)
C c(a); // (8) (a is an object of class A)
C c(b); // (9) (b is an object of class B)
}
Правильные:
а) 1-3
б) 1-3,5,9
в)1-6,8,9
г) 1-7
д) 1-3,5,6,9
е) нет
Мои рассуждения:
1) Правильно, просто конструктор по умолчанию
2) Правильно, конструктор по умолчанию или значение (4)
3) Правильно, конструктор по умолчанию
4) Неверно, нет конструктора для целого
5) Правильно, существует конструктор для объекта типа A
6) Правильно, по умолчанию
7) Неверно, так же, как4
8) В этом я не уверен, конструктора для объектов типа A нет, поэтому я бы сказал, что он некорректен
9) Правильно, конструктор существует.
Это мои рассуждения в любом случае, но я не уверен, где я ошибаюсь.