gpt4 book ai didi

c++ - 对纯虚函数实现的默认行为

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:15 24 4
gpt4 key购买 nike

我读到 Scott Meyers 建议虚函数的默认行为是:

class base
{
.....
protected:
void vfDefault();
public:
virtual void vf() = 0;
};

在派生类中实现时

class d1:public base
{
virtual vf()
{
vfDefault();
....
}
};

但也可以实现纯虚函数并将其用作默认行为:

class base
{
...
public:
virtual void vf() = 0;
}
void base::vf()
{
.....
};

在派生类中实现时

class d1:public base
{
virtual vf()
{
base::vf();
....
}
};

在默认行为的实现中使用纯虚函数有什么缺点吗?

最佳答案

请注意,vfDefault()vf() 具有不同的访问说明符。任何人都可以调用base::vf(),包括直接调用base实现。但是只有 base 的 child 可以调用 vfDefault()。因此,如果您将默认行为实现为单独的 protected 函数,则可以确保外部代码无法直接调用它。

关于c++ - 对纯虚函数实现的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40191410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com