已定义类A: class A { ptivate: int x; protected: int y; public: int z; A(int p1, int p2, int p3) { x = p1; y = p2; z = p3; } // 构造函数 }; 再定义派生类B: class B : public A { private: int a; public: // 定义派生类B的构造函数 }; 则下列派生类B的构造函数定义中,正确的是( )。
A.
B(int p1, int p2, int p3, int p4) { x = p1; y = p2; z = p3; a = p4; }
B.
B(int p1, int p2, int p3, int p4) { A(p1, p2, p3); a = p4; }
C.
B(int p1, int p2, int p3, int p4) { a = p4; }
D.
B(int p1, int p2, int p3, int p4) : A(p1, p2, p3) { a = p4; }