我对虚拟析构函数有一个小问题。众所周知,如果我们有一个抽象类A
(一个多态类),我们应该声明A
虚拟的析构函数。
但是,假设我们有B
,派生类A
,C
是B
的派生类。在B
中,我们重新定义A
的所有虚拟方法,以确保B
不再是抽象类。
我的问题是我们是否应该为了B
派生类(例如类C
)而声明struct A {
virtual ~A() = default; // Good practice: virtual here
virtual void foo() = 0;
};
struct B : A {
virtual ~B() = default; // Is virtual required here?
void foo() { }
};
struct C : B {
};
虚拟的析构函数。
=ARRAYFORMULA(iferror(mmult(A1:H523;TRANSPOSE(column(A1:H1))^0)))
提前致谢!