我正在学习C++而我正在进入虚拟功能.
根据我的阅读(在书中和在线),虚函数是基类中的函数,您可以在派生类中重写它们.
但是在本书前面,当我学习基本继承时,我能够在不使用的情况下覆盖派生类中的基本函数virtual.
那我在这里错过了什么?我知道虚拟功能还有更多功能,而且它似乎很重要,所以我想清楚它究竟是什么.我在网上找不到直接答案.
最近我碰到了C++的Singleton设计模式的实现/实现.看起来像这样(我从现实生活中采用了它):
// a lot of methods are omitted here
class Singleton
{
   public:
       static Singleton* getInstance( );
       ~Singleton( );
   private:
       Singleton( );
       static Singleton* instance;
};
从这个声明我可以推断出实例字段是在堆上启动的.这意味着存在内存分配.对我来说完全不清楚的是,什么时候内存将被解除分配?还是有漏洞和内存泄漏?好像在实施中存在问题.
我的主要问题是,如何以正确的方式实施它?
我认为我对普通(功能)设计模式有相当多的经验,例如在四本一书中所描述的,我主要在java和C#中使用.在这些"托管"语言中,这几乎是您完成工作所需要知道的一切.
然而,在C++的世界开发者还拥有所有的对象是如何被分配,传来传去,并删除了控制.我理解这些原则(我在其他文本中读过Stroutrup),但是我仍然需要花费很多精力来决定哪种机制最适合给定的场景 - 这就是一系列与内存相关的设计模式会很有用的地方.
例如,昨天我不得不创建一个类Results,它是几个对象的容器和另一种类型的对象的集合(在本例中为std :: vector).所以有一些我无法回答的设计问题:
当然,智能指针很酷而且没有,但是它们会产生语法混乱,我不相信对每个对象使用malloc是否是最佳方法.
我将非常感谢上述具体要点的答案,但对于与记忆相关的设计模式的一些更长和更一般的文本更是如此 - 这样我就可以解决周一我将遇到的问题!