c – 对象切片是否是一种可行的技术?

c – 对象切片是否是一种可行的技术?,第1张

概述假设我有一个名为AudioSample的类,实现不相关. AudioSamples可以从多个源加载,对于每个源,我从AudioSample派生一个类,为相关源添加相关的加载器代码.加载后,我会将对象传递给使用AudioSample by value的函数. 我似乎很好,它可以防止用各种加载函数污染基类,并防止我必须在必须添加新加载器时修改(经过试验和测试的)基类. 然而,当搜索stackoverf 假设我有一个名为AudioSample的类,实现不相关.
AudioSamples可以从多个源加载,对于每个源,我从AudioSample派生一个类,为相关源添加相关的加载器代码.加载后,我会将对象传递给使用AudioSample by value的函数.

我似乎很好,它可以防止用各种加载函数污染基类,并防止我必须在必须添加新加载器时修改(经过试验和测试的)基类.

然而,当搜索stackoverflow进行对象切片时,我只找到将其描述为问题的答案并解释它的潜在缺陷,这让我想知道:我是否以某种方式使用它我不应该这样做?通过这样做我会遇到潜在的问题吗?我目前还没有意识到这一点?

解决方法 对象切片本身并不是问题,因为它是一个非常明确定义的 *** 作.只是它通常会提出一个“WTF”时刻,因为它很少有意.我对代码质量的偏好度量是每分钟读数的WTF的倒数,所以从这个角度来看,这是一个坏主意,因为它需要大量的文档才能说“是的,我真的知道我在做什么”.

因此,我更倾向于将它限制在一个名副其实且功能齐全的功能上.像这样的东西:

class AudioSampleLoadedViaFoo : public AudioSample{  // ...public:  AudioSample getLoadedSample() const  {    return *this; // Slice on purpose to remove load-specific stuff  }};

这样,在外部代码中使用只会看到一个定义良好的函数,切片只是一个实现细节.

总结

以上是内存溢出为你收集整理的c – 对象切片是否是一种可行的技术?全部内容,希望文章能够帮你解决c – 对象切片是否是一种可行的技术?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1256022.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存