类和对象基础知识整理

c语言面向过程----------------》就是“变量”和“函数”是分开的

c++基于面向对象(不是纯面向对象,包括c语言,c语言是面向过程)---------------》对象指的是类的实例,将对象作为程序的基本单元,将函数(程序)和变量(数据)封装其中,提高软件灵活性,扩展性,重用性。

面向对象三大特性:封装  继承  多态

1.定义一个简单的类

2.成员函数的声明和定义

直接在类声明时定义//类内定义成员函数

声明和定义不在同一个文件中,一般将类的声明放入头文件中,将类的定义放入cpp文件中//类外定义成员函数

                           

3.访问限定符

1.public成员可以从类外直接访问,private和protect成员不能从类外直接访问

2.每个限定符在类体可使用多次,它的作用域是从该限定符出现开始到下一个限定符之前,或类体结束前。

3.类体没有定义限定符,则默认为私有的。

4.类的访问限定符体现了面向对象的封装性

4.作用域

类的作用域:

1.每个类都定义了自己的作用域,类的成员(成员函数/成员变量)都在类的这个作用域内。成员函数内可任意访问成员变量和其 他成员函数

2.对象可以通过.直接访问公有成员。指向对象的指针通过->也可以直接访问对象的公有成员

3.在类外定义成员,需要使用::作用域解析符指明成员属于哪个类域

#include<iostream>
using namespace std;
class Student
{
public:
 void Display()//成员函数
 {
  cout << _name << " " << _age << " " << _sex << endl;
 }
 
//成员变量
 char* _name;
 char* _sex;
 int _age;
 

};

int main()
{
 Student s;
 s._age = 7;
 s._name = "daidai";
 s._sex = "女";
 s.Display();
 Student* pstr = &s;
 pstr->_age = 9;
 pstr->_name = "xueba";
 pstr->_sex = "男";
 pstr->Display();
 system("pause");
 return 0;
}

5.类实例化对象(好比用图纸建房子)

1.类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它

2.一个类可以实例化出多个对象,实例化出的对象占实际的物理空间存储成员变量

6.类对象存储模型

每个对象的大小为类中所有成员变量的大小之和,当然这里也遵循内存对齐原则

8.结构体内存对齐规则:1.第一个成员在与结构体变量偏移量为0的地址处

                                   2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处

                                     //对齐数=编译器默认的一个对齐数与该成员大小的较小值   VS中默认的值为8  gcc中的默认值为4

                                   3.结构体总大小为最大对齐数(每个成员变量处了第一个成员都有一个对齐数)的整数倍

                                   4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是

                                     所有最大对齐数(含嵌套结构体的对齐数)的整数倍。

9.结构体内存对齐的原因:1.平台原因:不是所有的硬件平台都能访问任意地址上的任意类型数据,某些硬件平台只能在某些地                                            地址处去取某些特定类型的数据,否则抛出硬件异常。

                                     2.性能原因:数据结构应该尽可能的在自然边界上对齐。原因在于访问未对齐的内存,处理器可能需要                                            作多次内存访问;而对齐的内存仅需访问一次。(cpu访问不是一个字节一个字节访问)

总结:为什么要内存对齐:提高效率-----》以空间换取时间 


封装:隐藏对象的属性,和实现细节,仅对外公开接口和对象进行交互,将数据和操作数据的方法进行有机结合。

封装大致原则:1.把尽可能多的东西藏起来,对外提供简捷的接口

                         2.把所有属性藏起来

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值