C++ 解释这个虚拟函数指针代码? #包括 结构形状 { 虚拟形状*duplicate(){返回新形状;} virtual void print(){std::cout
下面定义了一个不带参数并返回指向C++ 解释这个虚拟函数指针代码? #包括 结构形状 { 虚拟形状*duplicate(){返回新形状;} virtual void print(){std::cout,c++,function-pointers,C++,Function Pointers,下面定义了一个不带参数并返回指向形状的指针的虚拟函数: #include <iostream> struct Shape { virtual Shape* duplicate() { return new Shape; } virtual void print() { std::cout << "SHAPE" << std::endl; } virtual ~Shape() {} }; struct Box : public Sha
形状的指针的虚拟函数:
#include <iostream>
struct Shape
{
virtual Shape* duplicate() { return new Shape; }
virtual void print() { std::cout << "SHAPE" << std::endl; }
virtual ~Shape() {}
};
struct Box : public Shape
{
virtual Box* duplicate() { return new Box; }
virtual void print() { std::cout << "BOX" << std::endl; }
};
int main(int argc, char** argv)
{
Shape* s1 = new Box;
Box* b1 = s1->duplicate();
b1->print();
delete s1;
delete b1;
return 0;
}
以下命令重写此函数
struct Shape
{
virtual Shape* duplicate() { return new Shape; }
请注意返回类型如何更改为Box*
。这是允许的,因为Box
是Shape
的子类。这称为
以下尝试通过Shape*
指针调用Box::duplicate()
:
struct Box : public Shape
{
virtual Box* duplicate() { return new Box; }
这不会编译,因为Shape::duplicate()
返回Shape*
而不是Box*
我看不到任何函数指针。如果它是虚拟的
让你困惑,请阅读一本书的相应章节或找到一篇关于这一问题的好文章。旁注:通常,以后进先出顺序创建和销毁对象,而不是以先进先出顺序创建和销毁对象,或者使用智能poi自动创建和销毁对象如果没有函数指针,shape*duplicate()的意思是什么@chris@MragankYadav,应用,duplicate
是一个返回指向形状的指针的函数。如果需要指向返回形状的函数的指针,则它是形状(*duplicate)()
,它可以再次成功地将螺旋规则应用于它以进行读取。
Shape* s1 = new Box;
Box* b1 = s1->duplicate();