package继承层次c++,使用Package指针的vector对象
时间: 2023-11-08 08:19:17 浏览: 112
基于ros的一个package(C++),通过读取键盘按键"w","a","s","d"按键指令发送指定的topic
在C++中,可以使用类的继承机制来实现包(package)的概念。一个包可以被视为一个基类,而其中的子包则可以被视为派生类。在一个包中可以包含多个子包和类,它们之间可以通过继承和组合来建立关联。
下面是一个使用继承实现的包的例子:
```cpp
class Package {
public:
Package() {}
virtual ~Package() {}
virtual void print() { cout << "This is a package." << endl; }
};
class SubPackage1 : public Package {
public:
SubPackage1() {}
virtual ~SubPackage1() {}
virtual void print() { cout << "This is a subpackage1." << endl; }
};
class SubPackage2 : public Package {
public:
SubPackage2() {}
virtual ~SubPackage2() {}
virtual void print() { cout << "This is a subpackage2." << endl; }
};
class MyClass {
public:
MyClass() {}
virtual ~MyClass() {}
virtual void print() { cout << "This is a class." << endl; }
};
```
在上面的代码中,Package是一个基类,它有两个派生类SubPackage1和SubPackage2。MyClass是一个普通的类,它没有继承Package。
如果你想使用一个vector来存储Package指针,可以这样做:
```cpp
vector<Package*> packages;
packages.push_back(new SubPackage1());
packages.push_back(new SubPackage2());
packages.push_back(new Package());
```
这样就可以把SubPackage1、SubPackage2和Package的指针都存储在packages中了。你可以通过循环遍历来输出它们的信息,例如:
```cpp
for (int i = 0; i < packages.size(); i++) {
packages[i]->print();
}
```
这样就可以输出它们各自的信息了。注意,在使用完指针后,要记得释放内存,例如:
```cpp
for (int i = 0; i < packages.size(); i++) {
delete packages[i];
}
```
阅读全文