class BASE{
public:
  virtual void out(int n = 0){ 〜; }
  virtual void out(void){ 〜; }
};

class A1 : public BASE{
public:
  void out(void){ 〜; }
};

int main()
{
  A1 a;
  a.out();
  a.out(2);  // ←コンパイルエラー

  return 0;
}


これってなんでコンパイル通んないんでしょう?
MSVC .NET使ってます。