小编典典

禁用复制构造函数

all

我有一堂课:

class SymbolIndexer {
protected:
  SymbolIndexer ( ) { }

public:
  static inline SymbolIndexer & GetUniqueInstance ( ) 
  { 
    static SymbolIndexer uniqueinstance_ ;
    return uniqueinstance_ ; 
  }
};

我应该如何修改它以禁用代码,例如:

SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );

并且只允许以下代码:

SymbolIndexer & ref_symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( );

阅读 101

收藏
2022-07-04

共1个答案

小编典典

您可以将复制构造函数设为私有并且不提供任何实现:

private:
    SymbolIndexer(const SymbolIndexer&);

或者在 C++11 中,明确禁止它:

SymbolIndexer(const SymbolIndexer&) = delete;
2022-07-04