类&对象--类&对象概念及定义

对象:指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,提高软件的重用性、灵活性和扩展性
面向对象三大特性:封装、继承、多态
封装性:数据和方法封装到一起 访问限定符
三种访问限定符:public(共有)、protected(保护)、private(私有)

  1. public成员可以从类外部直接访问,private/protected成员不能从外部直接访问
  2. 限定符在类体中可以使用多次,它的作用域从该限定符出现开始到下一个限定符之前
  3. 类体中如果没有定义限定符,默认为私有
  4. 访问限定符体现了面向对象的封装性

类: (class:默认私有 struct:默认公有) 程序(成员函数) 数据(成员变量)
类的作用域:
1.每个类都定义了自己的作用域,类的成员(成员函数/成员变量)都在这个类的作用域内,里边任意访问
2.对象可以通过.直接访问共有成员,指向对象的指针通过->直接访问对象共有成员
3.类外定义的成员,要使用::作用域解析符指明成员属于哪个类域

定义一个简单的类:

class Person              //类名
{
  public :                //访问限定符
  void display()          //成员函数
{}
public :
 char*   _name;           //成员变量
 char*   _sex;
 char*   _age;
};

类实例化对象:
1.类是一个模型,限定了类有那些成员,并没有分配实际的内存空间来储存它
2.一个类可以实例化出多个对象,实例化出的对象占用实际物理空间存储类成员变量
3.设计图纸造房子 类只是一个设计,实例化出的对象才能实际存储数据,占用物理空间

void Test()
{
   Person p;             //类实例化出对象
   p._name="jason";      //对象通过.直接访问公成员
   p._sex="男";
   p._age="10";
   p.Display();
}

类对象存储模型:
每个对象的大小为类中所有成员变量的大小之和,遵循内存对齐原则
内存对齐
为什么要内存对齐?
对齐效率高,以空间换时间。内存访问不是任意位置的访问,是从cpu字长的整数倍开始读
空类对象(无成员变量的类)大小是多少?为什么?
1 标识类的存在

结构体内存对齐规则:
1. 第一个成员在与结构体变量偏移量为0的地址处
2. 其它成员变量要对齐到对齐数的 整数倍 的地址处
//对齐数=编译器默认对齐数 与 该成员大小的较小值
vs中默认为8 gcc默认为4
3. 总大小为最大对齐数(除了第一个都有对齐数)的 整数倍
4. 嵌套结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数的整数倍

猜你喜欢

转载自blog.csdn.net/zhangjie1315/article/details/81214393
今日推荐