首先来说结论:

1.在C++中,类内的成员变量和成员函数分开存储

2.只有非静态成员变量才属于类的对象上

空类(类中上面对象都没没有)占用内存大小为:1

#include <iostream>
#include <string>
using namespace std;class Person
{};void test01()
{Person p;cout << "空类的内存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}

可能会有人有这个疑问,为什么空类占用内存不是0呢,这是因为:

  sizeof(A) > 0 是因为标准规定完整对象的大小为正数。因为每个内存都有它独有的代号 (首地址)

只有非静态成员变量才属于类的对象上的数据:

在类中添加一个成员变量:int m_A;

#include <iostream>
#include <string>
using namespace std;class Person
{
private:   //属性 一般私有int m_A;   //非静态成员变量
};void test01()
{Person p;cout << "空类的内存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}

因为非静态成员变量  属于类的对象上

静态成员变量它不属于类的对象上面的数据:

#include <iostream>
#include <string>
using namespace std;class Person
{
private:int m_A;static int m_B;
};void test01()
{Person p;cout << "空类的内存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}

这里顺便说一下,静态成员变量需要在类内声明,类外初始化,当然我因为没使用那个变量就没声明

印证了那句静态成员变量不属于类对象的数据

类内的成员变量和(成员函数和静态成员函数)分开存储:

#include <iostream>
#include <string>
using namespace std;class Person
{
public:int Swap(){}static double Fun() {}private:int m_A;static int m_B;
};void test01()
{Person p;cout << "空类的内存大小:" << sizeof(p) << endl;
}int main()
{test01();system("pause");return 0;
}

运行结果不出所也是:4

总结一下:

类内的成员变量和成员函数分开存储!

无论是静态成员变量、静态成员函数、非静态成员函数 都不属于类对象上的数据。

只有非静态成员变量属于类对象上的数据!

加油吧,骚年!

成员变量和成员函数分开存储相关推荐

  1. C++成员变量和成员函数分开存储

    C++t成员变量和成员函数分开存储 类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 class Person ...

  2. 类和对象- C++对象模型和this指针- 成员变量和成员函数分开存储

    成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空对象占用内存空间 class Person {};void test01() {Pers ...

  3. C++学习笔记(十)成员变量和成员函数分开存储、this指针、空指针访问成员函数、const修饰成员函数、友元

    1.成员变量和成员函数分开存储 //1.在C++中,类内的成员变量和成员函数分开存储 //2.只有非静态成员变量才属于类的对象上 //空对象占用内存空间为:1 //C++编译器会给每个空对象也分配一个 ...

  4. C++类的成员变量和成员函数的介绍

    类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型.类这种数据类型是一个包含成员变量和成员函数的集合. 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存.但 ...

  5. c++学习之const成员变量与成员函数

    c++学习之const成员变量与成员函数 常类型是指用类型修饰符const说明的类型,常类型的变量或者对象的值是不能被更新的.因此,定义或说明常类型时必须初始化. 如果在一个类声明常数据成员,那么任何 ...

  6. C++ const成员变量和成员函数

    const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字.初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表. co ...

  7. C++57个入门知识点_17 类的访问权限及C语言模拟类的封装(类的私有权限突破方法:编译期进行权限检查,运行期通过指针修改类的私有成员变量;利用函数指针对结构体中成员变量进行修改;CPU大小尾排列)

    接上篇:C++57个入门知识点_16 类的标准写法(类名.成员变量.成员函数及对象命名规则:成员变量一般为私有,成员函数为公有并暴露给外部使用成员变量:防止类过大,声明写在.h,实现写在.cpp,调用 ...

  8. Java 多态中成员变量与成员属性的特点【复习】

    package firstchapter;/*** 多态中成员变量与成员属性的特点*/ public class polymorphic {public static void main(String ...

  9. python中的类的成员变量以及property函数

    1 python类的各种变量 1.1 全局变量 在类外定义的变量. 1.2 类变量 定义在类里面,所有的函数外面的变量.这个变量只有一份,是所有的对象共有的.在类外用"类."来引用 ...

最新文章

  1. [JavaScript]关于div的隐藏
  2. jquery学习手记(1)
  3. zen3架构_全新Zen3架构,AMD发布最新Ryzen5000系列处理器
  4. 如何修改elementUI里面Dialog组件标题的样式
  5. 测试面试集-Python接口自动化测试
  6. ansible之安装与简单使用
  7. c++多态与java多态性_Java中的多态性
  8. 1996: [Hnoi2010]chorus 合唱队
  9. logistic回归分析优点_逻辑回归算法的优缺点
  10. Python 汇率换算
  11. 在FL Studio中如何制作白噪音的转场效果
  12. 香港虚拟主机租用价格
  13. JavaScript大师必须掌握的12个知识点 1
  14. Labview 版本控制
  15. html 去掉html超链接下划线
  16. 【清华集训2014】玛里苟斯
  17. Monkey框架(测试方法篇) - monkey日志分析
  18. 安卓和ios的app测试有什么区别?
  19. 如何利用人性的弱点在互联网中找到利润高的项目
  20. 图片翻译软件哪个好用?这些软件值得收藏

热门文章

  1. MindSpore张量mindspore::tensor
  2. 2021年大数据Spark(四十五):Structured Streaming Sources 输入源
  3. Ipython的Window与Linux详细安装
  4. java.lang.ArithmeticException: divide by zero
  5. Android Studio 配置OpenCV4.4.0 不用安装OpenCV Manager (泪崩居然用了礼拜天2天的时间居然还没配置成功,今天又看了下配置成功了)
  6. Axure 8 window 下载,破解
  7. 设计模式中的六大基本原则
  8. 想搞自动识别系统的应用程序,希望能跟有志于此的朋友交流
  9. Java动态代理和静态代理区别
  10. NOIP2005普及组第4题 循环