Второй случай.
В приведенном примере на С# код по факту СОВСЕМ другой - у Class2 есть неявный дефолтный конструктор. Добавьте туда что-то типа
- Код: Выделить всё • Развернуть
public class Class2(int param)
{}
т.е. явный недефолтный конструктор(тем самым уничтожив неявный дефолтный), и все обломится.
И таки да, в C++ с конструкторами и наследованием полная кхм... То есть там все логично, но уж очень наворочено. C# и Java запилили во многом из-за этого.
Для полной ясности:
- Код: Выделить всё • Развернуть
class Class1
{
public:
Class1();
Ultrasonic sonar;
}
заставляет компилятор сделать такое(java-подобный псевдокод)
- Код: Выделить всё • Развернуть
Class1::Class1()
{
super();
sonar = new Ultrasonic();
}
и тут - оппачки, а Ultrasonic::Ultrasonic()- то и нету, о чем и было доложено.
Добавлено спустя 6 минут 10 секунд:Romikgy писал(а):зачем равнять то, где памяти для выполнения и скорости в достатке , с тем где не памяти нормально , ни скорости ... возьмите тогда ARM и там будет все вплоть до дот нета....
Я согласен с Арамисом. С++ а аврах - изврат, для программ с ООП нужно больше ресурсов, упретесь быстро в дифицит памяти. Возьмите дешевый ARM, цена будет та же, зато ресурсов больше, и языки на любой вкус.