c++中不能以父类来接收子类的对象吗??

来源:百度知道 编辑:UC知道 时间:2024/06/20 23:59:04
c++中不能以父类来接收子类的对象吗??
//这是一个筒单工厂类
报三个错
分别是
Vehicle vehicle=null;//报错1类
vehicle = gcnew Car(licenseNo, name, Color, YearsOfService, dalRyent);//报错2类
vehicle = gcnew Truck(licenseNo, name, Color, YearsOfService, dalRyent, load);//报错2类
return vehicle;//报错3类

#pragma once
#include "Vehicle.h"
#include "Truck.h"
#include "Car.h"
ref class VehicleFactory
{
public:
VehicleFactory(void);
public : Vehicle CreateVehicle(String^ licenseNo,String^ name,String^ Color,int YearsOfService,double dalRyent,int load,int type)
{
Vehicle vehicle=null;
switch (type)
{
case 1:
vehicle = gcnew Car(licenseNo, name, Color, YearsOfService, dalRyent);
break;
case 2:
vehicle = gcnew Truck(licenseNo, name, Color, YearsOfService, dalRyent, load);
break;
}
return vehicle;
}
};

问题不清楚,接收子类是什么概念?

可以拿子类的对象给父类的对象赋值。
因为子类对象在性质上也是一个父类对象。就像卡车也是一种汽车。
可以拿卡车来给汽车赋值,因为卡车包含普通汽车所有的属性。
但是不可以拿汽车对象给卡车赋值,因为卡车对象中(卡车是派生类)可能包含汽车对象中不包括的属性,赋值无法进行。