[心得] 原來繼承不可逆
#include <iostream>
using namespace std;
class Base
{
public:
virtual void function1() {cout<<"Base :: function1()\n";};
virtual ~Base(){};
};
class D1: public Base
{
public:
~D1(){};
void function1() { cout<<"D1 :: function1()\n";};
};
class D2: public D1
{
public:
~D2(){};
void function1() { cout<<"D2 :: function1()\n";};
};
int main()
{
D2 *d2=new D2;
D1 *d1=new D1;
Base *b=new Base;
D1 *dd;
dd=d2;
dd->function1();
dd=d1;
dd->function1();
dd=b;
dd->function1();
return (0);
}
小弟先定義class Base->繼承給D1->繼承給D2 then 宣告D1 *dd 指標給各class
當dd指標Base(dd=b)時 compiler 便會出現
error: invalid conversion from 'Base*' to 'D1*' [-fpermissive
原來繼承不可指標逆回上一層
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.30.171
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1506826318.A.2B3.html
※ 編輯: gecer (111.255.30.171), 10/01/2017 10:52:49
※ 編輯: gecer (111.255.30.171), 10/01/2017 10:54:27
推
10/01 11:26, , 1F
10/01 11:26, 1F
→
10/01 11:26, , 2F
10/01 11:26, 2F
推
10/01 11:29, , 3F
10/01 11:29, 3F
→
10/01 11:29, , 4F
10/01 11:29, 4F
→
10/01 11:30, , 5F
10/01 11:30, 5F
推
10/01 18:48, , 6F
10/01 18:48, 6F
→
10/01 18:49, , 7F
10/01 18:49, 7F
→
10/01 18:49, , 8F
10/01 18:49, 8F
→
10/01 18:50, , 9F
10/01 18:50, 9F
→
10/01 18:50, , 10F
10/01 18:50, 10F
推
10/01 21:34, , 11F
10/01 21:34, 11F
→
10/01 21:34, , 12F
10/01 21:34, 12F
→
10/01 21:34, , 13F
10/01 21:34, 13F
→
10/01 21:34, , 14F
10/01 21:34, 14F
→
10/01 21:34, , 15F
10/01 21:34, 15F
推
10/01 21:44, , 16F
10/01 21:44, 16F
→
10/01 21:44, , 17F
10/01 21:44, 17F
→
10/01 21:44, , 18F
10/01 21:44, 18F
→
10/01 21:44, , 19F
10/01 21:44, 19F
推
10/01 22:01, , 20F
10/01 22:01, 20F
→
10/01 22:01, , 21F
10/01 22:01, 21F
→
10/01 22:57, , 22F
10/01 22:57, 22F
→
10/01 22:57, , 23F
10/01 22:57, 23F
推
10/02 08:02, , 24F
10/02 08:02, 24F
→
10/02 08:02, , 25F
10/02 08:02, 25F
→
10/02 08:03, , 26F
10/02 08:03, 26F
推
10/02 23:58, , 27F
10/02 23:58, 27F
→
10/02 23:58, , 28F
10/02 23:58, 28F