前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】Class中的属性和方法是如何存储的

【C++】Class中的属性和方法是如何存储的

作者头像
灰子学技术
发布2020-04-02 21:12:04
1.3K0
发布2020-04-02 21:12:04
举报
文章被收录于专栏:灰子学技术灰子学技术
  • 内容介绍:

在C++中对于一个Class,它内部的数据和方法到底是如何存储的呢?是将数据和方法都存储到Class的单个对象中呢,还是会将数据和方法分开来存储?如下图所示:

答案是图2,每个对象占用存储空间的只是该对象的数据部分(虚函数指针和虚基类指针也属于数据部分),函数代码属于公用部分,所以在Class的存储中,将数据部分与对象关联,函数部分则是存储在一个公共的地方。

  • 代码实例:
#include <iostream>using namespace std;
class Node {public:    int age;    string name;    void  print();};void Node::print() {    cout<<"print &name:"<<&name<<" name:"<<name<<" &age:"<<&age<<" age:"<<age<<endl;    cout<<"&print():"<<(void*)(&Node::print)<<endl;}int main() {  Node n;  n.name = "Davis";  n.age = 19;  n.print();
  Node n1;  n1.name = "Jack";  n1.age = 18;  n1.print();    return 0;}

输出结果:

结果分析:

通过输出我们可以看出,Node的两个对象n和n1中存储的数据name、age地址是不相同的,但是它们的公共函数print()的地址是相同的。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灰子学技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档