[英]derived class constructor call base constructor
我有一个基类Array和一个派生类NumericArray
class Array{//Array.h
private: int size;
public: Array();//Default constructor
Array(int index);// Initialize with size
GetSize();//getter function
};
class NumericArray:public Array
{//NumericArray.h
public: NumericArray();//Default constructor
NumericArray(int index);// Initialize with size
};
我知道如何在NumericArray类中调用默认的Array构造函数。 但是,当涉及到NumericArray(int index)时,我不知道。 由于派生类无法访问基类中的大小,因此我认为我应该在基类中使用getter函数。 但是我该怎么办?
谢谢。
只要派生类实例化了对象,您就可以调用基类的构造函数。 您可以通过使用类似于member-init的方式相对容易地做到这一点:
class Base
{
private:
int size;
public:
Base(int param) { size = param;}
//rest of the code here
};
class Derived : public Base
{
private:
//other data members
public:
Derived(int param): Derived(param) { //set rest of data}
};
这会将param
传递给Base
的构造函数,并使其可以执行任何操作。 Derived
不需要直接访问Base
size
,因为它可以使用已经存在的内容来处理它。 如果您想要更深入的解释和示例, 这是一个很好的解释。 (滚动到构造函数的2/3左右)
由于size
是基类Array
的private
变量,因此无法在子类NumericArray
对其进行访问。
在子类NumericArray
中,有两种访问size
方法:
在基类Array
中将size
为受保护的变量,并在子类NumericArray
对其进行访问。
protected: int size;
在返回size
的基类Array
中编写一个getter
公共函数( GetSize()
),然后子类NumericArray
可以通过此链接使用super.GetSize()
在子类的构造函数中调用此getter
公共函数。
public: GetSize() { return size }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.