简体   繁体   English

请让我理解将派生类对象分配给基类指针-C ++

[英]Please make me understand assigning derived class object to base class pointer- C++

Lets say you have a base class Base and derived class Derived . 假设您有一个基类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

While below code works, 虽然以下代码有效,

Derived *d=new Base(); //no typecasting required here, why?

What's the difference between above two cases? 以上两种情况有什么区别?

Thanks! 谢谢!

Base is-not-a Derived , so neither this: Base 不是- Derived ,所以这两个都不是:

Base b;
Derived *d;
d=&b; 

nor this: 也不是这样:

Derived* d = new Base();

makes any sense or works. 有意义或可行。 Both would result in something like 两者都会导致类似

error: invalid conversion from 'Base*' to 'Derived*' [-fpermissive] 错误:从“基本*”到“派生*”的无效转换[-fpermissive]

Both are doing exactly the same thing: assigning a Base* to a Derived* . 两者都在做完全相同的事情:将Base*分配给Derived*

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在C++中将派生类指针分配给基类指针 - assigning derived class pointer to base class pointer in C++ 在C ++中将派生类对象分配和访问到基类“指向指针的对象”对象 - Assigning and Accesing derived class object to base class “pointer to pointer” object in C++ C ++ - 将派生类分配给基类 - C++ — Assigning a derived class to a base class 使基类指针的行为类似于C ++中的派生类 - Make base class pointer behave like derived class in C++ C ++从派生类指针获取基类对象? - c++ get base class object from derived class pointer? 如何在c ++中将指向基类的指针赋给派生类的对象? - How to assign a pointer to base class to an object of a derived class in c++? 指向C ++中派生类的基类指针 - the base class pointer to the derived class in c++ 在 C++ 继承中,当指向基类的指针对象指向派生类时,不调用派生类析构函数 - In C++ Inheritance, Derived class destructor not called when pointer object to base class is pointed to derived class 将基类指针分配给免费商店中创建的派生类对象 - assigning a base class pointer to a derived class object created in the free store C++ Unable to assign base class “this” pointer the derived class object inside base class constructor - C++ Unable to assign base class “this” pointer the derived class object inside base class constructor
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM