C ++中的构造函数行为

时间:2010-12-18 06:59:28

标签: c++ constructor

这怎么可能?
test t2=50 ...因为t2是对象a .....所以它怎么能等于整数 使用visual studio 2008

class test
{
public :
 int a,b;
 test(int x=0,int y=0)
 {
  a=x;
  b=y;
 }
};


void g()
{
 test t1=test(10,20);
 test t2=50;
 cout<<t1.a<<":"<<t1.b<<endl;
 cout<<t2.a<<":"<<t2.b<<endl;
}

int main()
{
 g();
 system("pause");
}

1 个答案:

答案 0 :(得分:8)

由于构造函数未定义为explicit,编译器使用test类中定义的构造函数通过将整数参数传递给构造函数来创建test对象(参数{{1 }})。为避免这种情况,请将构造函数声明为x