Tag: 纯虚拟

覆盖纯虚函数时,有没有使用`override`的意思?

例如: class Base { virtual void my_function() = 0; }; class Derived : Base { void my_function() override; }; 从我所读到的, override关键字被用来确保我们在正在被覆盖的函数中有正确的签名,并且它似乎是它唯一的用法。 但是,在纯虚函数的情况下,如果我们在Derived类(或者Base类,依赖于如何看待事物)中使用了不正确的签名,那么编译器会抛出一个错误。 那么,在Derived::my_function()声明的末尾添加override是否有任何意义?

在C#中的纯虚拟方法?

我被告知让我的课程摘要: public abstract class Airplane_Abstract 并且做一个叫虚拟的方法 public virtual void Move() { //use the property to ensure that there is a valid position object double radians = PlanePosition.Direction * (Math.PI / 180.0); // change the x location by the x vector of the speed PlanePosition.X_Coordinate += (int)(PlanePosition.Speed * Math.Cos(radians)); // change the y location by the […]

为什么用0初始化纯虚函数?

我们总是声明一个纯虚函数: virtual void fun () = 0 ; 即,它总是分配给0。 我的理解是,这是初始化这个函数的Vtable条目为NULL和任何其他值在这里导致编译时错误。 这种理解是否正确?

纯虚函数可能没有内联定义。 为什么?

纯虚拟函数是那些虚拟的成员函数,并具有纯指定符 ( = 0; ) C ++ 03 第10.4条第2款告诉我们什么是抽象类,作为一个附注,下面是: [注:一个函数声明不能​​同时提供一个纯粹的说明符和一个定义 – 结束注释] [例子: struct C { virtual void f() = 0 { }; // ill-formed }; – 例子] 对于那些对这个问题不太熟悉的人,请注意, 纯虚函数可以有定义,但是上面提到的条款禁止这样的定义出现在内联(lexically in-class)。 (对于定义纯虚函数的使用,您可能会看到,例如, GotW ) 现在所有其他types的function都可以提供一个一stream的定义,而这种限制似乎是乍看起来绝对是人为的和无法解释的。 想想看,似乎是这样的第二次和随后的一瞥:)但我相信如果没有一个具体的原因这个限制不会在那里。 我的问题是:有人知道这些具体原因吗? 好的猜测也是受欢迎的。 笔记: MSVC确实允许PVF具有内联定义。 所以不要感到惊讶:) 这个问题中的内联单词并不是指inline关键字。 这应该是词汇在课堂上

“纯虚函数调用”崩溃从何而来?

我有时会注意到程序在我的电脑上出现错误:“纯虚函数调用”。 当一个对象不能创build一个抽象类时,这些程序如何编译?

未定义的符号“vtable for …”和“typeinfo for …”?

几乎最后一步,但仍然有一些奇怪的erros …. bash-3.2$ make g++ -Wall -c -g Myworld.cc g++ -Wall -g solvePlanningProblem.o Position.o AStarNode.o PRM.o PRMNode.o World.o SingleCircleWorld.o Myworld.o RECTANGLE.o CIRCLE.o -o solvePlanningProblem Undefined symbols: "vtable for Obstacle", referenced from: Obstacle::Obstacle()in Myworld.o "typeinfo for Obstacle", referenced from: typeinfo for RECTANGLEin RECTANGLE.o typeinfo for CIRCLEin CIRCLE.o ld: symbol(s) not found collect2: ld returned 1 exit […]

纯虚函数与实现

我的基本理解是,没有一个纯虚函数的实现,但是,我被告知可能有纯虚函数的实现。 class A { public: virtual void f() = 0; }; void A::f() { cout<<"Test"<<endl; } 代码是否高于OK? 有什么目的,使它成为一个纯虚函数的实现?

你如何在C ++中声明一个接口?

我如何设置一个代表接口的类? 这只是一个抽象的基类吗?