C++ Idioms 04

本文详述了C++中的5个重要编程技巧:Named Constructor用于直观创建对象;Non-copyable Mixin防止对象拷贝;Exception Safe Swap确保交换操作的异常安全性;RAII(Resource Acquisition Is Initialization)保证资源的自动释放;Resource Return用于通过返回值转移资源所有权。每个Idiom都配有用途说明和示例代码。
摘要由CSDN通过智能技术生成
  • 本文介绍了 C++ 的 5 个特别用法(Idioms),分别是
    • Named Constructor;
    • Non-copyable Mixin;
    • Exception Safe Swap;
    • Resource Acquisition Is Initialization (RAII);
    • Resource Return;

16. Named Constructor

用途

  • 以更直观的方式创建对象
  • 创建对象时执行附加操作(比如约束等)

示例代码

class Game
{
   
public:
  static Game create_single_player_game() {
    return Game(0); }
  static Game create_multi_player_game() {
    return Game(1); }
protected:
  Game(int game_type);
};

17. Non-copyable Mixin

用途

  • 禁止对象的拷贝构造和赋值操作

示例代码

class UnCopyable  // 在继承链外无法创建 UnCopyable 对象
{
   
protected:
  UnCopyable() {
   }
  ~UnCopyable() {
   }
private:
  UnCopyable(const UnCopyable&);
  UnCopyable& operator=(const UnCopyable&);
};

class CannotCopy : private UnCopyable {
   }; // 禁止对象的拷贝构造和赋值操作

int main() {
   
  UnCopyable uncopyable;  // ERROR! 无法创建 UnCopyable 对象
  CannotCopy cannotcopy1; // OK
  CannotCopy cannotcopy2;
  CannotCopy cannotcopy3 = cannotcopy1; // ERROR! 拷贝构造被禁止
  cannotcopy2 = cannotcopy1;            // ERROR! 拷贝赋值被禁止
  
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值