草庐IT

overriding

全部标签

c++ - 覆盖 C++ 虚方法

我有一个类模板,其中一些方法被定义为虚拟方法,以便我的类的用户能够在他的派生类中为它们提供实现。请注意,在我的模板类中,有一些使用虚拟方法的非虚拟方法(应该返回值的虚拟类在非虚拟类中被调用)。你能给我一个正确代码的简单示例,其中父类的虚拟方法应该返回一个值(但它的实现是在子类中提供的)并且父类中的虚拟方法返回的值是在该类的其他方法中使用。因为我在某处看到(例如这里:SafelyoverrideC++virtualfunctions),这可能会导致一些问题,并且用户定义的方法会注意覆盖父类的虚拟方法。注意:我使用g++编译器使用Code::Blocks进行编程。编辑:按照这里的要求,我想

c++ - 覆盖虚函数和隐藏非虚函数有什么区别?

给定以下代码片段,函数调用有什么区别?什么是函数隐藏?什么是函数覆盖?它们与函数重载有什么关系?两者有什么区别?我在一个地方找不到对这些的详细描述,所以我在这里询问,以便我可以整合信息。classParent{public:voiddoA(){coutdoA();p2->doA();cp->doA();p1->doB();p2->doB();cp->doB();} 最佳答案 什么是函数隐藏?...是名称隐藏的一种形式。一个简单的例子:voidfoo(int);namespaceX{voidfoo();voidbar(){foo(42

c++ - 覆盖虚函数和隐藏非虚函数有什么区别?

给定以下代码片段,函数调用有什么区别?什么是函数隐藏?什么是函数覆盖?它们与函数重载有什么关系?两者有什么区别?我在一个地方找不到对这些的详细描述,所以我在这里询问,以便我可以整合信息。classParent{public:voiddoA(){coutdoA();p2->doA();cp->doA();p1->doB();p2->doB();cp->doB();} 最佳答案 什么是函数隐藏?...是名称隐藏的一种形式。一个简单的例子:voidfoo(int);namespaceX{voidfoo();voidbar(){foo(42

c++ - 为什么 "override"在 C++11 的末尾?

我试图了解为什么在C++11中,他们必须在方法的末尾添加override关键字,而不是像virtual。我没有看到在方法声明中同时编写virtual和override的兴趣。委员会没有选择在需要时简单地编写override而不是virtual是否有技术原因?谢谢! 最佳答案 关于添加关键字控制覆盖(override/final)的建议,论文N3151,让我们对这个选择有了一些了解(强调我的):Itispreferabletoputsuchvirtualcontrolkeywordsattheendofthedeclarationso

c++ - 为什么 "override"在 C++11 的末尾?

我试图了解为什么在C++11中,他们必须在方法的末尾添加override关键字,而不是像virtual。我没有看到在方法声明中同时编写virtual和override的兴趣。委员会没有选择在需要时简单地编写override而不是virtual是否有技术原因?谢谢! 最佳答案 关于添加关键字控制覆盖(override/final)的建议,论文N3151,让我们对这个选择有了一些了解(强调我的):Itispreferabletoputsuchvirtualcontrolkeywordsattheendofthedeclarationso

c++ - 将 'override' 用于已使用 'typedef' 声明的函数

C++11为函数引入了'override'说明符,我发现它很有用,因为它明确表明要覆盖虚函数。但是,我似乎无法让它适用于使用typedef声明的函数。我知道“覆盖”不是关键字,它与此有关吗?以下代码说明了我的观点:#includetypedefcharReturnsChar();classBasic{public:virtualcharget_a();virtualReturnsCharget_z;};charBasic::get_a(){return'a';}charBasic::get_z(){return'z';}classCapitalized:publicBasic{publ

c++ - 将 'override' 用于已使用 'typedef' 声明的函数

C++11为函数引入了'override'说明符,我发现它很有用,因为它明确表明要覆盖虚函数。但是,我似乎无法让它适用于使用typedef声明的函数。我知道“覆盖”不是关键字,它与此有关吗?以下代码说明了我的观点:#includetypedefcharReturnsChar();classBasic{public:virtualcharget_a();virtualReturnsCharget_z;};charBasic::get_a(){return'a';}charBasic::get_z(){return'z';}classCapitalized:publicBasic{publ

c++ - 子类化时覆盖静态变量

我有一个类,我们称它为A,在该类定义中我有以下内容:staticQPainterPath*path;也就是说,我声明了一个指向路径对象的静态(类范围)指针;此类的所有实例现在都将具有相同的共享数据成员。我希望能够以此类为基础,将其子类化为更专业的形式,分层行为,并且每个类都有自己独特的路径对象(但不必重复计算边界框或调用绘画例程等无聊的部分)。如果我对它进行子类化以创建一个类F(例如),我希望F使用从A继承的绘图例程,但要使用在F中声明的静态(类范围)路径对象。我尝试过上面的声明在私有(private)部分(并在派生类F中重复),并尝试将它放在protected部分中,所有这些都没有任

c++ - 子类化时覆盖静态变量

我有一个类,我们称它为A,在该类定义中我有以下内容:staticQPainterPath*path;也就是说,我声明了一个指向路径对象的静态(类范围)指针;此类的所有实例现在都将具有相同的共享数据成员。我希望能够以此类为基础,将其子类化为更专业的形式,分层行为,并且每个类都有自己独特的路径对象(但不必重复计算边界框或调用绘画例程等无聊的部分)。如果我对它进行子类化以创建一个类F(例如),我希望F使用从A继承的绘图例程,但要使用在F中声明的静态(类范围)路径对象。我尝试过上面的声明在私有(private)部分(并在派生类F中重复),并尝试将它放在protected部分中,所有这些都没有任

c++ - QWidget keyPressEvent 覆盖

我正在尝试在QT中重写QWidgetskeyPressEvent函数,但它只是行不通。我不得不说我是CPP的新手,但我知道ObjC和标准C。我的问题是这样的:classQSGameBoard:publicQWidget{Q_OBJECTpublic:QSGameBoard(QWidget*p,intw,inth,QGraphicsScene*s);signals:voidkeyCaught(QKeyEvent*e);protected:virtualvoidkeyPressEvent(QKeyEvent*event);};QSGameBoard是我的QWidget子类,我需要重写key