相关疑难解决方法(0)

什么时候不应该使用虚拟析构函数?

是否有充分的理由为类声明虚拟析构函数?什么时候应该特别避免写一个?

c++ virtual-functions virtual-destructor

95
推荐指数
6
解决办法
3万
查看次数

具有非虚析构函数的派生类

在某种情况下,派生类是否合法拥有非virtual析构函数?非virtual析构函数表示不应将类用作基类.具有virtual派生类的非析构函数是否会像Java final修饰符的弱形式一样?

我特别感兴趣的是派生类的基类有一个virtual析构函数.

c++

49
推荐指数
4
解决办法
6万
查看次数

class具有虚函数和可访问的非虚析构函数

我有两节课:

class A {
public:
    virtual void somefunction() = 0;
};

class B : public A {
public:
    B();
    ~B();
    void somefunction();
};

B::B() {}

void B::somefunction() {
    //  some code
}
Run Code Online (Sandbox Code Playgroud)

但是使用g ++我会收到错误:

class A has virtual functions and accessible non-virtual destructor
class B has virtual functions and accessible non-virtual destructor
Run Code Online (Sandbox Code Playgroud)

我不知道这个错误是什么......在博客上的某个地方,我读到这是一个编译器警告.我该如何解决这个问题?

c++ virtual-destructor

14
推荐指数
2
解决办法
2万
查看次数

没有虚拟方法的虚拟析构函数有什么危害吗?

在我的设计期间,有时我会遇到添加/删除虚拟方法的情况.我知道的经验法则是,一旦我有虚拟方法,我将拥有一个虚拟析构函数.

我的问题:如果我在创建类时立即添加虚拟析构函数会有什么危害(所以即使没有虚拟方法)?基本上这个想法不会在以后忘记它.特别是对于n个派生类,我不需要在以后的n个地方更改它.

c++ virtual-destructor

1
推荐指数
1
解决办法
207
查看次数