我们都知道,实现子类到父类的转换比较简单,但如何实现父类到子类的转换呢?
现有一个场景如下,假设我有一个类,里边存有海量的数据作为成员变量,例如cv::Mat等等,占用内存大小较大,可能以M或G计,我们想要对其的若干个对象操作,例如排序等等,该操作仅会使用他的部分成员变量,比如时间戳(double)、类型(字符串)、大小(size_t)等等,并且这些成员变量占内存较小,如果直接使用该类进行操作,那么频繁地交换、储存临时变量将占内存比较大,其中一个思路是将其改造为子类,其父类仅有需要进行操作的成员变量,在进行操作前我们将对象由子类转为父类,然后从父类操作后的结果复原出子类对象。

例如上图,将对象由类CLASS转为FATHER时,SON存在但是FATHER没有的成员变量或者函数将会丢失,那么怎么从FATHER再复原回这些呢?直接的类的强转得到的子类仅有的成员变量将会是不对的:
本文的类将以以下两个类为基础,B为A的子类,a和b为父类A的变量,并且B继承于A,B.c为B相比于A多出的成员变量。
class A{
public:
A(int aa,int bb){
a = aa;
b = bb;
}
int geta(){
return a;
}
int getb(){
return b;
}
void print(){
cout<<"a:"<<a<<endl;
cout<<"b:"<<b<<endl;
}
private:
int

最低0.47元/天 解锁文章
4623

被折叠的 条评论
为什么被折叠?



