Я пытаюсь узнать о наследовании C ++, но одна вещь не имеет для меня никакого смысла.Все, что гуглится о том, что не наследуется производным классом, говорит о том, что конструкторы, friends и operator = не наследуются.Однако эта информация не согласуется с результатами моей программы.
Я сделал пример наследования, и в результате получилось следующее:
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
cout << "constructor base class without parameters" << endl;
}
Base(int a)
{
cout << "constructor base class with int parameter" << endl;
}
Base(const Base& b)
{
cout << "copy constructor base class" << endl;
}
Base& operator= (const Base& base)
{
cout << "operator= base class" << endl;
}
};
class Derived: public Base
{
};
int main()
{
Derived d;
cout << endl << "here 1" << endl << endl;
Derived d2 = d;
cout << endl << "here 2" << endl << endl;
d = d2;
//Derived d3 (3); // ERROR!!
}
Вывод был:
constructor base class without parameters
here 1
copy constructor base class
here 2
operator= base class
Если все конструкторы и оператор = не наследуются, почему называются оператор =, конструктор по умолчанию и конструктор копирования базового класса?