虚拟,怎么用
Virtual, how to use it?
本文关键字:虚拟 更新时间:2023-10-16
class a
{
public:
a(int);
virtual ~a();
virtual void print();
int getNumber()
private:
int number;
};
class b : public a
{
public:
b(int);
virtual ~b();
};
class c : public b
{
public:
c(int);
virtual ~c();
virtual void print();
};
是代表CPP文件的头文件。我在每个适当的cpp文件中实现了所有方法。我使用了这个代码,它工作得很好,虽然我想知道b类是否也应该实现打印(甚至像这样:Print(){}),因为在我看来这是更好的编程。那么,怎样做才是合适的呢?实现(即使没有必要)还是不实现?
面向对象编程中继承的全部意义在于您可以依赖于您不想重写的方法的超类实现。
您应该只编写将要被子类重载的函数。如果子类没有专门化给定的行为,那么在子类中编写父函数的副本将是不好的做法。这不仅会造成浪费和潜在的混乱,而且还可能在以后的某个时候导致错误。
考虑一下:父类我将命名为Monkey,子类我将命名为Tarzan。在Monkey类中,我将为Swing()定义一个函数。
现在,由于泰山是猴子的衍生物,并且学会了像猴子一样在树上摇摆,所以没有必要编写泰山自己版本的swing函数。但是,假设我把它写下来只是为了"完整"。现在我有两个例程需要更新,如果我需要改变猴子摆动的方式:一个用于猴子类,另一个用于泰山。更糟糕的是,如果我确实改变了猴子的摆动方式,而忘记在泰山中做同样的改变,泰山将不再像猴子一样摆动,这将是意想不到的,而且可能是错误的。
结论:只在子类函数中编写代码,当子类需要从已经为父类定义的专门化时。
相关文章:
- 虚拟决赛作为安全
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 如何在C++中获得"静态纯虚拟"功能?
- C++无法定义虚拟函数 OUTER 类和头文件
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 大小虚拟继承中的派生类
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- std::is_trivially_copyable_v 关于虚拟功能
- 删除C++继承中虚拟类成员的代码重复
- 子类地址等于虚拟基类地址?
- 当覆盖存在时调用基本虚拟"binded to object"函数
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 是否可以使用基类非虚拟方法中的派生类虚拟方法?