COD*_*ror 1 c++ inheritance pointers
假设您有一个基类Base和派生类Derived.
Base b;
Derived *d;
d=&b; // this line gives error, why? I think it asks for typecasting, why?
//When you assign derived class object address to base class pointer, it works fine. Why not the above case works fine
Run Code Online (Sandbox Code Playgroud)
虽然下面的代码工作,
Derived *d=new Base(); //no typecasting required here, why?
Run Code Online (Sandbox Code Playgroud)
上述两种情况有什么区别?
谢谢!
Base 是不是 Derived,所以这不是:
Base b;
Derived *d;
d=&b;
Run Code Online (Sandbox Code Playgroud)
也不是这样
Derived* d = new Base();
Run Code Online (Sandbox Code Playgroud)
任何意义或作品.两者都会产生类似的结果
错误:从'Base*'到'Derived*'的无效转换[-fpermissive]
两者都做了完全相同的事情:分配Base*给a Derived*.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |