C++的类的设计中我们可以看到类对数据和属性进行了封装。
但是封装的内部是什么样子的呢?
今天我们就这些基础的知识进行探讨一下。
在成员变量和成员属性中,
类内部的实现是如何的?
下面我们举例说明一下:
/****************************************************
* brief : C++面向对象模型初探
* author : shao
* date : 2020-03-01
* note : none
*
****************************************************/
/**
* 1、非静态成员变量含在类内部
* 2、成员函数虽申明在类内部,但却在类外且只有一份
*/
#include <iostream>
using namespace std;
class A{
public:
int a;
};
class B{
public:
int a;
static int b;
};
class C{
public:
int a;
static int b;
public:
int test1();
};
class D{
public:
int a;
static int b;
public:
int test1();
static int test2();
};
void test01()
{
A a;
B b;
C c;
D d;
cout << "sizeof(class A) : " << sizeof(a) << endl;
cout << "sizeof(class B) : " << sizeof(b) << endl;
cout << "sizeof(class C) : " << sizeof(c) << endl;
cout << "sizeof(class D) : " << sizeof(d) << endl;
}
int main(void)
{
test01();
return 0;
}
结果如下:
我们可以看到,
A中只有普通变量,且放在类内部。
B中有普通成员变量和静态成员变量,但是只有普通变量放在类内部。
C中有普通成员变量静态成员变量和普通成员方法,但是也只有普通成员变量放在类内部。
D中有普通成员变量静态成员变量,普通成员方法和静态成员方法。但最后只有普通成员变量放在类内部。
由此可见,
在类中,只有普通成员变量会放在类内部。成员方法和静态属性部分都会放在类外,且只独有一份,
这是所有对象共同享有的。