gpt4 book ai didi

c++ - 在 C++ 中,您几乎一直都在做什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:37 26 4
gpt4 key购买 nike

当我用 C++ 组合一个类时,我几乎总是会做一些事情。

1) 虚拟析构函数2) 复制构造函数和赋值运算符(我要么根据名为 Copy() 的私有(private)函数实现它们,要么将它们声明为私有(private)的,从而明确禁止编译器自动生成它们)。

您发现什么东西几乎总是有用的?

最佳答案

奇怪的是,这里的大部分建议都是我特别不做的事情。

  • 我不会将 dtors 虚拟化,除非我专门将其设计为可继承。它增加了很多开销并阻止了自动内联,这很糟糕,因为大多数 dtor 无论如何都是空的(并且很少有类从继承中受益)
  • 除非默认值不起作用,否则我不会制作复制构造函数/赋值操作——如果不起作用,我可能需要重新考虑设计。请记住,在 string 和 vector 之间,几乎没有理由再调用 new 了。创建与默认拷贝相同的自己的拷贝构造器几乎肯定会降低效率。
  • 我不添加字符串转换。它会导致太多问题,因为在您不希望出现的地方静默调用类型转换。最好添加一个 ToString() 方法。
  • 我不加 friend op<<,因为 friend 都是邪恶的,乱七八糟的。最好添加一个 Display(ostream) 方法。然后 oper<< 可以调用它,并且不需要成为 friend 。事实上,您可以使 oper<< 成为调用 Display() 的模板函数,而再也不用担心它了。

关于c++ - 在 C++ 中,您几乎一直都在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/315987/

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