zoukankan      html  css  js  c++  java
  • 面向对象模型初探

    成员变量和函数的存储

    c++实现了“封装”,那么数据(成员属性)和操作(成员函数)是什么样的呢?

    “数据”和“处理数据的操作(函数)”是分开存储的。

      c++中的非静态数据成员直接内含在类对象中,就像c struct一样。

      成员函数(member function)虽然内含在class声明之内,却不出现在对象中。

      每一个非内联成员函数(non-inline member function)只会诞生一份函数实例.

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    class Person
    {
    public:
        int m_A;   //非静态成员变量,属于对象身上  打印结果为int的size  4
        void func() {}; //非静态成员方法 不属于对象身上       结果仍然是 4
        static int m_B;  //静态成员变量 不属于对象身上       结果      4
        static void func2() {}; //静态成员方法 不属于对象身上    结果  4
        double m_C;         //字节对齐 int占4字节 double占8字节 所以以double为准  结果是16
    };
    
    void test701()
    {
        //空类的大小为1 每个实例的对象 都是独一无二的地址, char维护这个地址
        cout << "sizeof (Person) =" << sizeof(Person) << endl;   //当类中什么都没有时  结果  1
    }
    
    int main()
    {
        system("Pause");
        return 0;
    }

    结论:非静态成员变量,才属于对象身上

  • 相关阅读:
    这是个神奇的博客
    Tomcat Access Log 的格式
    CA证书
    记一次性能调优
    web系统能力培养计划
    金融知识学习
    读《华为区块链白皮书》
    马未都说收藏:陶瓷篇(8、9)元青花、永宣青花
    阿里历年面试试题
    回车(CR)换行(LF)的来历及区别
  • 原文地址:https://www.cnblogs.com/yifengs/p/15167478.html
Copyright © 2011-2022 走看看