Oracle® Solaris Studio 12.4:C++ 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

9.4 使用值类

包括结构和联合在内的 C++ 类通过值来传递和返回。对于 Plain-Old-Data (POD) 类,C++ 编译器需要像 C 编译器一样传递 struct。这些类的对象直接进行传递。对于包含用户定义复制构造函数的类的对象,要求编译器有效地构造对象的副本,将指针传递到副本,并在返回后销毁副本。这些类的对象间接进行传递。编译器也可以选择介于这两个需求之间的类。不过,该选择影响二进制的兼容性,因此编译器对每个类的选择必须保持一致。

对于大多数编译器,直接传递对象可以加快执行速度。这种执行速度的改善对于小值类(例如复数和概率值)来说尤其明显。有时为了改善程序执行效率,您可以设计更可能直接传递而不是间接传递的类。

如果类具有以下任何一个特征,则它将间接传递:

  • 用户定义的复制构造函数

  • 用户定义的析构函数

  • 间接传递的基

  • 间接传递的非静态数据成员

否则,类被直接传递。