Я не совсем понимаю как работает наследование.
class A {
protected:
int num1;
public:
A(int num1) {
this->num1=num1;
}
};
class B : public A {
protected:
int num2;
public:
B(int num2) {
this->num2=num2;
}
};
int main() {
A a(5);
B b(4);
return 0;
}
В объекте b
есть переменная num1
. Она пустая или нет? Поля наследуются, а значения в этия полях? Есть ли способ унаследовать значение num1
объекта a
в b
?
Для начала ваш код не скомпилируется - потому что у вас нет конструктора по умолчанию A
. Так что вы просто вынуждены написать что-то типа
B(int num2):A(0) {
this->num2; // Что за бред?
}
или
B(int num1, int num2):A(num1) {
this->num2; // Что за бред?
}
и тем самым инициализировать обе переменные...
Кстати, правильнее записать:
B(int num1, int num2):A(num1),num2(num2) {}
Конструктор наследника всегда вызывает конструктор родителя, даже если вы его не указываете явно (в этом случае вызывается конструктор по умолчанию), что и является, как мне кажется, ответом на ваш вопрос...
Ну, а обратиться к num1
в классе B
вполне можно - раз уж вы объявили ее protected
. Но только внутри класса - т.е. внутри функций класса B
. Просто как к num1
(ну, или this->num1
при необходимости).
Наследование только копирует структуру данных базового класса. Если вы хотите взять значения из другого объекта, то передавайте ссылку откуда. И чтобы копировать эти данные нужно добавить конструктор копирования.
class A {
protected:
int num1;
public:
A(int num1) {
this->num1=num1; }
A(A const & a):num1(a.num1){}
};
class B : public A {
protected:
int num2;
public:
B(A const & a , int num2):A(a) {
this->num2=num2; }
};
int main() {
A a(5);
B b(a,4);
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите пожалуйстаУ меня есть серверная и клиентская часть написанная на Web Socket
Изучаю JS + RN и пишу приложение с навигациейХочу отрендерить компонент в зависимости от переданных в него пропсов
Мне нужно каким-то образом нужно сделать так, чтобы при переходе на другую страницу моего сайта, музыка, которая играет у пользователя не обрывалась,...