Derive::Derive(int i, int j) : Base(i)
时间: 2024-10-27 10:11:08 浏览: 21
这是一个C++构造函数的示例,`Derive::Derive(int i, int j) : Base(i)`是在创建`Derive`类的对象时使用的。`Derive`是一个派生类,`Base`是它的基类。这里通过`: Base(i)`,表示当创建`Derive`对象时,会先初始化基类`Base`,并将`i`这个整数值传递给基类的构造函数。`int i`是传入构造函数的一个参数,`int j`在这个例子中并未显示如何使用,可能是为了后续在`Derive`类中使用。
例如,如果`Base`有一个接受一个整数的无参构造函数,完整的构造过程可能如下:
```cpp
class Base {
public:
Base(int value) : baseValue(value) {}
private:
int baseValue;
};
class Derive : public Base { // 继承自Base
public:
Derive(int i, int j) : Base(i), someOtherMember(j) {} // j可能用于其他成员变量初始化
private:
int someOtherMember;
};
```
相关问题
#include <iostream> using namespace std; class Base { int a; public: Base(int i) { a=i; cout<< "Base constructor" <<endl; } ~Base(){ cout<< "Base destructor" <<endl; } void print(){ cout<< a <<endl;} }; class Member { int b; public: Member(int j) { b=j; cout<< "Member constructor" <<endl; } ~Member(){cout<< "Member destructor" <<endl; } void print(){cout<< b <<endl;} }; class Derive : public Base { int c; Member mem; public: Derive(int i, int j, int k) : mem(j), Base(i) { c=k; cout<< "Derive constructor" <<endl; } ~Derive(){ cout<< "Derive destructor" <<endl;} void print() { Base::print(); mem.print(); cout<< c << endl; } }; int main() { Derive d(2,3,4); d.print(); return 0; }
这是一个 C++ 的面向对象程序,其中定义了三个类:Base、Member、Derive。其中,Base 是基类,Member 是一个包含一个整型成员的类,Derive 是一个从 Base 继承而来的派生类,其中包含一个 Member 对象和一个整型成员。
在程序中,首先定义了 Base 类,其中有一个构造函数和一个析构函数,构造函数中输出 "Base constructor",析构函数中输出 "Base destructor"。Base 类中还定义了一个 print 函数,用于输出类中的私有成员 a。
接着定义了 Member 类,其中有一个构造函数和一个析构函数,构造函数中输出 "Member constructor",析构函数中输出 "Member destructor"。Member 类中还定义了一个 print 函数,用于输出类中的私有成员 b。
最后定义了 Derive 类,它从 Base 类继承而来,其中包含一个 Member 对象和一个整型成员 c。Derive 类中的构造函数使用了成员初始化列表的方式,先初始化 Member 对象,再初始化 Base 对象。构造函数中输出 "Derive constructor",析构函数中输出 "Derive destructor"。Derive 类中还定义了一个 print 函数,它调用了 Base 类和 Member 类的 print 函数,并输出类中的私有成员 c。
在 main 函数中,定义了一个 Derive 类的对象 d,使用构造函数 Derive(int i, int j, int k) 初始化对象 d。最后调用对象 d 的 print 函数,输出类中的私有成员 a、b、c。
逐行分析下列程序,并显示结果:#include <iostream.h> class BASE{ int m_base; public: BASE( int m_b=0 ) { m_base=m_b; cout<<"BASE Constructor! m_base="<<m_base<<endl; } virtual void f(){ cout<<"BASE::f() called!"<<endl; } virtual ~BASE(){ cout<<"BASE Destructor!"<<endl; } }; class DERIVE: public BASE{ int m_derive; public: DERIVE ( int a, int b=1 ):BASE(a) { m_derive=b; cout<<"DERIVE Constructor! m_derive="<<b<<endl; } void f( ) { cout<<"DERIVEL::f() called!"<<endl; } ~DERIVE() { cout<<"DERIVE Destructor!"<<endl; } }; void main() { BASE b[2]; b[0].f(); BASE *pb = new DERIVE(2,3); pb->f(); delete pb; }
这是一个 C++ 程序,包含两个类:BASE 和 DERIVE。
程序的主函数 main() 中定义了一个 BASE 类的数组 b,数组长度为 2,并依次调用了两个 BASE 类的构造函数 BASE()。然后调用了数组 b 的第一个元素的 f() 函数,输出 BASE::f() called!。
接下来,定义了一个指向基类 BASE 的指针 pb,并使用 new 运算符在堆上创建了一个 DERIVE 对象,构造函数 DERIVE() 中调用了基类 BASE 的构造函数 BASE(),并输出了 BASE Constructor! m_base=2 和 DERIVE Constructor! m_derive=3。
接着,通过指针 pb 调用了 DERIVE 类的 f() 函数,输出 DERIVEL::f() called!。
最后,使用 delete 运算符释放了 pb 所指向的内存,并在 DERIVE 类的析构函数 DERIVE::~DERIVE() 中输出了 DERIVE Destructor! 和 BASE Destructor!。
程序的输出结果如下:
BASE Constructor! m_base=0
BASE Constructor! m_base=0
BASE::f() called!
BASE Constructor! m_base=2
DERIVE Constructor! m_derive=3
DERIVEL::f() called!
DERIVE Destructor!
BASE Destructor!
BASE Destructor!
阅读全文