class A
{
public:
A()
{
}
explicit A(int i)
{
i_ = i;
}
void Print()
{
printf_s("%d\n", i_);
}
private:
int i_;
};
class B : public A
{
public:
B(int i)
{
A::A(i);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
B b(1234);
b.Print();
return 0;
}
以上代码会打印出 1234 吗?
当然不会……正确的写法如下:
class A
{
public:
A()
{
}
explicit A(int i)
{
i_ = i;
}
void Print()
{
printf_s("%d\n", i_);
}
private:
int i_;
};
class B : public A
{
public:
B(int i) : A(i)
{
//A::A(i);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
B b(1234);
b.Print();
return 0;
}