相关疑难解决方法(0)

为什么我们需要C++中的虚函数?

我正在学习C++而我正在进入虚拟功能.

根据我的阅读(在书中和在线),虚函数是基类中的函数,您可以在派生类中重写它们.

但是在本书前面,当我学习基本继承时,我能够在不使用的情况下覆盖派生类中的基本函数virtual.

那我在这里错过了什么?我知道虚拟功能还有更多功能,而且它似乎很重要,所以我想清楚它究竟是什么.我在网上找不到直接答案.

c++ virtual-functions

1223
推荐指数
18
解决办法
52万
查看次数

C++ Singleton设计模式

最近我碰到了C++的Singleton设计模式的实现/实现.看起来像这样(我从现实生活中采用了它):

// a lot of methods are omitted here
class Singleton
{
   public:
       static Singleton* getInstance( );
       ~Singleton( );
   private:
       Singleton( );
       static Singleton* instance;
};
Run Code Online (Sandbox Code Playgroud)

从这个声明我可以推断出实例字段是在堆上启动的.这意味着存在内存分配.对我来说完全不清楚的是,什么时候内存将被解除分配?还是有漏洞和内存泄漏?好像在实施中存在问题.

我的主要问题是,如何以正确的方式实施它?

c++ singleton design-patterns

692
推荐指数
11
解决办法
65万
查看次数

C++中的内存管理模式

我认为我对普通(功能)设计模式有相当多的经验,例如在四本一书中所描述的,我主要在java和C#中使用.在这些"托管"语言中,这几乎是您完成工作所需要知道的一切.

然而,在C++的世界开发者还拥有所有的对象是如何被分配,传来传去,并删除了控制.我理解这些原则(我在其他文本中读过Stroutrup),但是我仍然需要花费很多精力来决定哪种机制最适合给定的场景 - 这就是一系列与内存相关的设计模式会很有用的地方.

例如,昨天我不得不创建一个类Results,它是几个对象的容器和另一种类型的对象的集合(在本例中为std :: vector).所以有一些我无法回答的设计问题:

  1. 我应该按值还是通过智能指针返回此类?
  2. 在类中,矢量和对象应该是普通成员,还是应该再次存储为智能指针?
  3. 在向量中,我应该直接存储对象,还是再次指向它们的智能指针?
  4. 在我的Results类中定义的getter应该返回什么(即值,引用或智能指针)?

当然,智能指针很酷而且没有,但是它们会产生语法混乱,我不相信对每个对象使用malloc是否是最佳方法.

我将非常感谢上述具体要点的答案,但对于与记忆相关的设计模式的一些更长和更一般的文本更是如此 - 这样我就可以解决周一我将遇到的问题!

c++ design-patterns memory-management

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