如何实现测量子类大小?

五号智能 2017-04-22 01:01:31

#include <iostream>
using namespace std;
struct c_size{
size_t size(){
return sizeof(*this);
}
};

struct T1:public c_size{
int b;
};

int main(){

T1 A;
A.b = 6;
cout <<"这是子类大小"<<A.size()<<endl;

return 0;
}



我想实现一个接口, 可以测量子类对象的大小..
但是以上办法是不行的,所以求大神请教.
...全文
268 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
五号智能 2017-04-30
  • 打赏
  • 举报
回复
谢谢版主给了思路.
五号智能 2017-04-23
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
因为父类函数中的this指针是指向父类类型的指针 可以将size()函数用虚函数,子类中也实现对应的size函数
这个办法我知道.但我真正的目的是想在父类中完成一些对自己的操作.比如测量大小,复制自身等等,而子类能继承 这些行为.并能得到正确结果.. 按正常语义来说: T1继承于c_size类.T1拥有c_size的行为. 那么, 这些行为虽然继承于c_size类.但它的本质应该是属于T1的. 因此 T1类对象 A.size() 中的this 的类型.就应该是T1 而不是它的父类. 毕竟现在是T1类型的A在调用size.而不是c_size类型的A调用size.
paschen 2017-04-23
  • 打赏
  • 举报
回复
父类中也是没办法直接知道子类大小的 你可以在父类加上一个成员变量,并在子类构造函数中用sizeof(*this)初始化他
paschen 2017-04-23
  • 打赏
  • 举报
回复
引用
因此 T1类对象 A.size() 中的this 的类型.就应该是T1 而不是它的父类.
父类成员函数的this指针都是指向父类的类型,即使子类中调用,也是指向父类的指针类型
paschen 2017-04-22
  • 打赏
  • 举报
回复
因为父类函数中的this指针是指向父类类型的指针 可以将size()函数用虚函数,子类中也实现对应的size函数

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧