ネーム・スペースおよび多重定義

C++複数のネーム・スペースにまたがって関数を多重定義することができます。次に例を示します。

// Original X.h:
  f(int);
 
// Original Y.h:
  f(char);
 
// Original program.c:
  #include "X.h"
  #include "Y.h"
 
void z()
{
  f('a'); // calls f(char) from Y.h
}

ソース・コードを大幅に変更することなく、ネーム・スペースを上記の例に導入できます。

// New X.h:
namespace X {
  f(int);
  }
 
// New Y.h:
namespace Y {
  f(char);
  }
 
// New program.c:
  #include "X.h"
  #include "Y.h"
 
  using namespace X;
  using namespace Y;
 
void z()
{
  f('a'); // calls f() from Y.h
}

program.c で、関数 void z() は、ネーム・スペース Y のメンバーである関数 f() を呼び出します。 using ディレクティブをヘッダー・ファイルに入れると、program.c のソース・コードは、変更されないままです。

関連参照

IBM Copyright 2003