コンストラクターが明示的である場合、暗黙的な変換には使用されません。指定されたスニペットでは、コンストラクターはとしてマークされていexplicit
ます。それでは、なぜfoo obj1(10.25);
それが機能していて、機能しfoo obj2=10.25;
ていないのですか?
#include <iostream>
class foo
{
int x;
public:
explicit foo( int x ):x(x)
{}
};
int main()
{
foo obj(10.25); // Not an error. Why ?
foo obj2 = 10.25; // Error
getchar();
return 0;
}
エラー:エラーC2440:'初期化中':'double'から'foo'に変換できません