你好,假设我有一个抽象类,它有几个纯抽象函数,我有几个类派生自这个类,这些类中的所有数据最终都变得相似,我想知道在抽象类中声明一个受保护的向量来收集数据是否明智,甚至是可能的。
class A
{
protected:
vector <string> str;
public:
virtual function x();
virtual function y(); //etc etc
virtual ~A(){;}
};
class B : public A
{
public:
function x();
function y();
我已经开始学习C++了,我已经知道C和Java了。我已经开始学习它,因为我想开始使用面向对象编程。
然而,我被代码卡住了,因为编译器生成了“对Actor的vtable的未定义的引用”。在这里,你有生成相同错误的代码,而不是原始的错误,因为它不太清楚。我真的不知道是什么原因造成的。
struct Actor
{
int x, y;
virtual void move();
};
struct Player : Actor
{
Player(int a, int b)
{
x = a;
y = b;
}
只是想知道,什么会是最快的?如果我有一个像这样的基类
Class Base
{
virtual void Draw()
{
//something...
}
};
然后我会有一个Base数组,如下所示:
Base Array[255];
它可以同时包含Base和它的衍生物。例如,这将是存储各种绘图命令的一种方式。(我知道这看起来很像java,但这只是示例。只有一个函数的类没有多大意义。)
现在或者,如果我确切知道我会做什么导数,它可以这样做
class Base
{
int ID;
};
然后是一个和以前一样的基数组:基数组Array255;
然后在导数中创建绘图函数:
class Der1
在一些书中,声明或继承虚函数的类被称为多态类。
类B没有任何虚函数,但通过了多个is-a测试。
类C有一个虚函数,但没有继承。
class A {};
class B : public A {};
class C
{
public:
virtual void f () {}
};
B类或C类是多态的吗?
将代码从复制到我的代码中后,我得到了错误:note: because the following virtual functions are pure within 'TEA':和XTEA,但只有这两个函数。其他函数,AES,BLOWFISH,CAMELLIA,RC4,RC5,RC6等都可以正常工作。就是这两个函数出错了。我不明白为什么。
来自链接的代码(稍作修改):
class CryptoAlgorithm
{
public:
virtual std::string encrypt(std::string DATA) = 0;
virtua
我想使用C++11 override说明符,并注意到它可以与virtual一起使用。这有什么不同吗?考虑以下类:
class Base
{
virtual void fct() = 0;
};
class Derived1 : public Base
{
void fct() override {}
};
class Derived2 : public Base
{
virtual void fct() override {}
};
Derived1和Derived2在技术上有区别吗?
我通常不会发布这么简单的东西,但这个问题让我抓挠了一段时间。
我试图重写子类中的方法,但收到以下错误消息:
我的BitCompressor.java扩展了Compressor.java并尝试覆盖它的encodeInput(...)方法,但是在编译时,我得到了以下错误:error: method does not override or implement a method from a supertype
上面的屏幕截图显示了原始方法(中间)、试图覆盖该方法的子类(顶部)和错误(底部)。
有什么想法吗?谢谢。
我有以下几个类:
class Base
{
public:
virtual void foo(int x = 0)
{
printf("X = %d", x);
}
};
class Derived : public Base
{
public:
virtual void foo(int x = 1)
{
printf("X = %d", x);
}
};
当我拥有的时候:
Base* bar = ne
比如,例如,
class A {
template<typename T> T DoStuff();
template<> virtual int DoStuff<int>() = 0;
};
Visual Studio2010说没有,但我有一种奇怪的感觉,我只是把语法搞乱了。成员函数模板的显式完全专门化可以是虚拟的吗?
首先,下面的代码不是工作在visual c++上,而是工作在有出血的地方
输出为0,但acc。对我来说应该是1;有人能解释这个吗?
#include<iostream>
using namespace std;
class shape
{
public:
virtual void print() const =0;
virtual double area() { return 0.0;}
};
class point : public shape
{
int x;
int y;
public :
point(int a=11, int b=1
我在C++中使用虚函数有一个小问题
我有一个B类,它扩展了A类。
Class A{
virtual function 1 // does nothing
virtual function 2 // does nothing
}
class B : public class A {
function 1 { does some thing }
function 2 { does some thing }
}
我有另一个类实现
class implement {
B b;
A *a = &B;
a.function 1();
a.function 2(
我有如下的类结构:
现在我有了一个Device指针,我知道它的类型是WiredHeadphone或RadioHeadphone。我需要将此指针传递给HeadphoneInterface。
在一个完美的世界里,我只会使用dynamic_cast。不幸的是,我使用的是一个完全不支持dynamic_cast的嵌入式平台。目前我这样做:
HeadphoneInterface *GetDeviceAsHeadphone(Device* dev) {
// use my own type system to identify the actual type and cast accord
开始在现有的代码库上使用PC-Lint (恐惧和恐惧)。
它抱怨的一件事是:
class IBatch
{
public:
virtual void StartBatch() =0;
virtual int CommitBatch() =0;
};
当另一个类从这个派生出来像使用接口一样使用它时,
base class 'IBatch' has no destructor
那么,问题来了:当你像上面那样创建接口类时,你总是包含一个虚拟析构函数吗?为什么?(是样式还是编码错误?)
所以,我写了一个Java程序来寻找二次方程的解,我的问题是我似乎不能写正确的代码来找到“虚数”,当它打印出来时,我只得到了"NaN“。有什么解决方案吗?
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter the value for a: ");
double a = scan.nextDou
我必须写一个程序,它的一个函数将通过抽象基类返回一个派生类,所以当被返回到main的类可以访问派生类时,虚方法。
请记住,我不能更改主程序中的任何内容,因为我不是编写它的人。
#include<iostream>
using namespace std;
class A
{
private:
public:
virtual void DoIt(void)=0;
A(void){};
~A(void){};
};
class B:
public A
{
private:
int Num;
public:
virtual void