本文介绍了 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
{
protected :
UnCopyable ( ) {
}
~ UnCopyable ( ) {
}
private :
UnCopyable ( const UnCopyable& ) ;
UnCopyable& operator = ( const UnCopyable& ) ;
} ;
class CannotCopy : private UnCopyable {
} ;
int main ( ) {
UnCopyable uncopyable;
CannotCopy cannotcopy1;
CannotCopy cannotcopy2;
CannotCopy cannotcopy3 = cannotcopy1;
cannotcopy2 = cannotcopy1;
return 0 ;
}