我想了解有关upcasting(child to parent)的static_cast。这对我没有意义。我必须把一个孩子交给父母并且证明它。在网上查看一些代码并参考书籍时,这就是我所拥有的。演示static_cast和它的目的?
Mustang *myMustang = new Mustang;
Car *myCar = new Car;
myMustang = static_cast<Mustang*>(myCar);
但坦率地说,它没有显示任何东西。我没有证实它甚至被铸造。我试图给Car类添加一个公共函数,并从孩子那里调用它,但是......它显然是继承的。
这也意味着我目前在这种类型的上传中没有看到目的。
我的问题是,我如何验证这个甚至铸造,这种铸造类型的目的是什么?
更新:答案有点难以遵循,因为我没有这种类型的铸造经验,虚拟功能是一个模糊的记忆。我的朋友能够帮助我。下面是代码,以防其他人有相同的问题。
class Car {
public:
virtual void Greeting() { cout << "I am a car." << endl; };
};
class Focus : public Car{
public:
void FocusGreeting() { cout << "Hello, I am a Ford Focus." << endl; }
};
class Mustang : public Car {
public:
virtual void Greeting() override { cout << "I am a Ford Mustang." << endl; }
};
// in main
Mustang* myMustang = new Mustang;
Car *myCar = new Car;
myCar->Greeting();
cout << "Now ";
myCar = static_cast<Car*>(myMustang);
myCar->Greeting();
除非'Mustang'是一个基类'Car',这是未定义的行为 –
你是向下倾斜的,而不是向上倾斜的。 –
也尝试使用可以通过派生类型重写的虚函数。 –