Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
const Type&, но в этом случае хоть компилятор ругнётся, если foo() не const, а вот если возвращать Type — нет.компилятор генерирует тела по умолчанию именно в месте объявления классаВот тут не соглашусь (или я вас не понял?). Он их генерит, если они нужны. То есть если вы нигде не использовали operator=, то он сгенерирован не будет.
class A {
public:
A();
};
int main() {
// A a;
return 0;
}
А если убрать комментарий, то компилятор задумается «как же этот объект-то создать? где ж конструктор? ба! нет конструктора! undefined reference to `A::A()'»1.3.10 signature [defns.signature]
the information about a function that participates in overload resolution (13.3): the types of its parameters and, if the function is a class member, the cv- qualifiers (if any) on the function itself and the class in which the member function is declared.2) The signature of a function template specialization includes the types of its template arguments (14.5.5.1).
2) Function signatures do not include return type, because that does not participate in overload resolution.
class E {int x;};
class EE : E {int x;};
...
E e;
cout << sizeof(e) << "\n";
EE ee;
cout << sizeof(ee) << "\n";
Получаем:4 82.2. Но волшебные данные не складываются
class E {};
class EE : E {};
...
Получаем:1 1Это как-то странно. У вас есть объяснение?
Что скрывает class Empty {}