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



C++ 有提供像是 C 中 realloc() 这样的函数的新版本吗? 第1页

  

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

主要是构造函数这玩意太灵活了,你新追加的对象很难有个高效的统一的调用方式(既有对象可以move过去)。

例如说你realloc了5个类T新实例,这5个新实例是不是都调用同样的参数调用同样的构造函数呢?


如果是,那在接口设计和实现时大概就是诸如:

       template <typename T, typename ... Args> T* cpp_realloc(int n, Args&& ... args) {     //realloc     for (int i = 0; i < n; i++)     {         new(&obj[i]) T(std::forward<Args>(args) ...);     } }      

看着很简单,但问题是:T的构造中是否有涉及参数的移动语义。

一但有,要么忍受“5个对象由相同参数传入,但实质结果不同(只有第一个对象能获得真实参数)”,要么就要设计一个复杂的语法或大量的临时对象的构造来完成这样的工作——到这时,你就需要考虑,到底这么干,到底是不是真的能提高性能或者降低调用者的使用复杂度了。


如果不是,那就更麻烦,这就意味着你还要提供一些回调机制来让使用者来决定实际调用的构造函数及参数。


所以,如果小项目里,明确没有类似场景,可以自己弄一个玩玩。

但是如果推广为通用的面向所有场景的,那这个想法基本上不现实。




  

相关话题

  C/C++该采用怎样的命名规则才能让自己的代码足够清晰呢? 
  Android 将来能否实现用 C/C++ 作为开发语言?还是说现在的架构就注定了只适合用 Java? 
  为什么 C++ 中一个类的成员类型不能是该类本身,而 C# 中就可以? 
  大一新生做C语言课设被强制要求使用 Borland C++ 3.1,此IDE相对于其他IDE有何优点? 
  有没有必要让 12 岁孩子学 C++? 
  VS 2015 的跨平台特性对 Qt 会带来多大的冲击呢? 
  C++可否将父类的对象cast子类,并调用子类的private函数? 
  为什么C++有一些奇特的语法? 
  MFC、WTL、WPF、wxWidgets、Qt、GTK 各有什么特点? 
  std::list::sort 用了什么算法?为什么速度这么快? 

前一个讨论
可控核聚变会不会让地球走向富氧?
下一个讨论
核聚变是颗大炸弹,可可控核聚变就是一个大电站,太阳上的核聚变是炸弹吗?如果是,为什么不一次炸完?





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利