MC++の変な問題

解決


清原  2006-08-10 18:32:35  No: 62707  IP: 192.*.*.*

Windows XP  Visual C++.Net 2003  MC++

こんにちは、今日も変なことを発見しました、質問を提出させていただきます。
以下の部分はコードです、問題点は  なぜ  エラー出ないのですか?
引数なしのコンストラクターは定義していないのに…

#using <mscorlib.dll>
using namespace System;

__value class ValueClass
{
public:
  __wchar_t  m_Name __gc[];
  Byte    m_Chinese;
  Byte    m_English;
  Byte    m_Math;

public:
  //ValueClass()
  //{
  //  ....
  //}
  ValueClass( String* name ) : m_Chinese(0),m_English(0),m_Math(0)
  {
    m_Name = name->ToCharArray();
  }
  ValueClass( String* name , Byte chinese , Byte english , Byte math ):
    m_Chinese(chinese),m_English(english),m_Math(math)
  {
    m_Name = name->ToCharArray();
  }
};


int _tmain()
{
         ////デフォルトのコンストラクターが呼び出されるはずだが…
  ValueClass obj;
  obj.m_Name = (S"Justin")->ToCharArray();
  obj.m_English = 90;
  obj.m_Math = 73;
  obj.m_Chinese = 67;
  return 0;
}

コンパイルエラーが出ると思ってるけど、意外とひとつも出てきません。
このクラスを  __gc class  にして  もう一度コンパイルしてみたら、エラーが出ます。
どうして  __value class  で  そういうエラーが出ないのですか?
よろしくお願いします〜

編集 削除
YuO  2006-08-10 19:11:25  No: 62708  IP: 192.*.*.*

__value classにおいて,デフォルトコンストラクタは定義がなくてもあるものとされます。

MSDNをちゃんと読みましょう。
http://msdn.microsoft.com/library/ja/vcmxspec/html/vcManagedExtensionsSpec_5.asp

編集 削除
清原  2006-08-11 21:36:13  No: 62709  IP: 192.*.*.*

YuOさん、ご指導、ありがとうございます。
MSDNに乗ってるのは本当に詳しくて  役立ちました。

お騒ぎしました  m(_ _)m

編集 削除