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 で そういうエラーが出ないのですか?
よろしくお願いします〜
__value classにおいて,デフォルトコンストラクタは定義がなくてもあるものとされます。
MSDNをちゃんと読みましょう。
http://msdn.microsoft.com/library/ja/vcmxspec/html/vcManagedExtensionsSpec_5.asp
YuOさん、ご指導、ありがとうございます。
MSDNに乗ってるのは本当に詳しくて 役立ちました。
お騒ぎしました m(_ _)m
ツイート | ![]() |