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;}