Я учусь на C ++ из учебника, но все еще сбиваю с толку
C ++ Программа:
using namespace std;
#include<iostream>
class A
{
public:
A()
{
std::cout << "A\n";
}
};
class B: public A
{
public:
B()
{
std::cout << "B is derived class\n";
}
};
int main()
{
A * a=new A(); //valid
B * b=new B(); //valid
A * aa=new B(); //valid why?
B * bb=new A(); //invalid why? run time error: invalid conversion from ‘A*’ to ‘B*’ [-fpermissive]
return 0;
}
эта строка
A * a=new A(); //valid
использовать, потому что Я хочу для доступа к классу a
и
эта строка
B * b=new B(); //valid
используется, потому что я хочу получить доступ к классу b
и
Я пишу эту строку с целью обучения, я не знаю, но это действительно так, почему ??
A * aa=new B(); //valid
и
I Я пишу эту строку, цель обучения, которую я не знаю, но это неверно, почему ??
B * bb=new A(); //not valid
объясните, пожалуйста, последние две строки все еще путаница?
ссылка на программу: https://onlinegdb.com/Sy8xkt38L