类模版成员变量的继承
时间: 2023-07-31 21:08:34 浏览: 49
类模板成员变量的继承和普通类的成员变量的继承是类似的,派生类可以直接继承基类的成员变量,包括类模板成员变量。在派生类中,可以使用基类的成员变量,但不能直接访问基类的私有成员变量。需要通过公有或保护的成员函数访问。
例如,我们定义一个基类模板:
```
template <typename T>
class Base {
public:
T value;
Base(T v) : value(v) {}
};
```
然后我们定义一个派生类模板:
```
template <typename T>
class Derived : public Base<T> {
public:
Derived(T v1, T v2) : Base<T>(v1), another_value(v2) {}
T getAnotherValue() const {
return another_value;
}
private:
T another_value;
};
```
在这个例子中,派生类 Derived 继承了基类 Base 的成员变量 value。在构造函数中,我们通过 Base<T>(v1) 显式地调用基类构造函数初始化 value。在派生类中,我们还定义了自己的成员变量 another_value,并且通过公有成员函数 getAnotherValue() 访问它。需要注意的是,我们无法直接访问基类的私有成员变量 value,需要通过基类的公有成员函数或者保护成员函数访问。
在使用派生类时,可以像使用基类一样使用其成员变量:
```
Derived<int> d(10, 20);
cout << d.value << endl; // 输出 10
cout << d.getAnotherValue() << endl; // 输出 20
```
在这个例子中,我们创建了一个 Derived 对象 d,并访问了其成员变量 value 和 another_value,以及公有成员函数 getAnotherValue()。