百科问答小站 logo
百科问答小站 font logo



C++的move构造是否是设计失败的? 第1页

  

user avatar   haozhi-yang-41 网友的相关建议: 
      

实话说呢,我觉得C++在这块是有点过度设计的。

其实 stl 或者其它容器,里面就默认是你不在意各种可能发生的拷贝开销的对象就行了。

如果对象很复杂,你很介意这点,那就放指针。

如果你担心用裸指针会资源泄露或者野指针的话,那就用智能指针。

如果觉得智能指针不好用,或者在某些场景下不适用,那就干脆向迭代器那样,弄个专属的什么容器指针之类的。

……

总之,在数据/对象拷贝那么敏感的场合,用指针,或者指针的各种变形,显然才是正道。



其实在很多现实项目中,在非核心代码中,有限、可控的额外开销并非不可接受的——为了消除这么点东西,把语法和代码弄得再复杂一团,实在没必要。

如果是性能极度敏感的核心代码,直接退回到纯 C / 指针的代码显然是更简单直接快捷的。

归根结底,我觉得作为一个底层的编程语言,最重要的不是无(额外)开销,而是明确知道在特定场景下有什么/有多少(额外)开销




  

相关话题

  C++底层是如何实现的? 
  为什么微软不把C# 设计成像C++一样可以编写底层3D程序的一门语言了? 
  C++在面向对象编程中,非虚继承和非虚析构函数的存在是为了解决什么问题? 能否都用虚继承和虚析构函数? 
  为什么 C 语言没有被 C++ 取代? 
  Linus Torvalds 的 C++ 水平如何,为什么他敢炮轰此编程语言? 
  对于C#与C++之间的数据传输,用GCHandle或Marshal是否就是最好的方案了? 
  C++ 11为什么引入nullptr? 
  qt5.5中给全零地址发送udp数据包为何会失败? 
  Mac 下顺手的 C/C++ 开发 IDE 是哪个? 
  为什么时效上具有明显优势的基数排序(radix sort)没有快速排序流行? 

前一个讨论
核动力航母反应堆启动时间需要多久?
下一个讨论
武松的武艺是跟谁学的呢?





© 2025-05-06 - tinynew.org. All Rights Reserved.
© 2025-05-06 - tinynew.org. 保留所有权利