发布网友 发布时间:2022-04-23 13:32
共2个回答
热心网友 时间:2023-11-02 21:06
子类对象的引用和指针可以转换为父类对象的引用和指针。但是,严格来说子类对象不可以转换为父类对象,然而,确实可以在需要一个父类对象的地方使用子类对象,这种是借助于子类对象引用与父类对象引用的转换 以及 父类对象的copy构造函数实现的。
例如:Base 为父类,B1 是其子类。
B1 b;
Base a(b); 这句话中就好像将子类对象b 转换为一个 父类的临时对象,然后又用这个临时对象初始化对象a 。但是,是这样的吗?下面来仔细分析一下。这句话中调用的copy构造函数的原型是
Base::Base( const Base &base);注意这个函数的参数是一个父类对象引用。首先将一个父类Base的引用base绑定到子类对象,然后将该引用作为实参传递给copy构造函数。copy构造函数使用 子类B1对象的父类部分,对a进行初始化。构造函数运行完毕,就产生了对象a。
从父类到派生类的自动转换是不存在的。
参考资料:C++ Primer 第四版 487页-490页
热心网友 时间:2023-11-02 21:06
现在我给你一个事例:
#include <iostream.h>
void main()
{
public class Father
{
public string name="liu de hua";;
public string sex="boy";
public height="178"';
void print()
{ cout<<"my age is:"<<endl;
}
}
public father extends Son{
age="90";
}
public Son()
{}
publi static void main(string args[])
{
Son so=new Son();
cout<<"my name is"<<so.sex<<endl;
cout<<"my height is"<<so.height<<endl;
cout<<"my sex is"<<so.height<<endl;
}
希望你能够明白,这就是继承的问题了