C/C++ 学习小结

C/C++ 学习小结

static 关键字

首先简单了解一下进程的内存分配。
进程被装载到一块内存中,内存分为以下区域:
代码区(text):程序需要执行的指令,即各函数编译生成的指令。
数据区:包含了明确被初始化的全局变量,(所有)静态变量,和数据常量。
未初始化数据区(bss):该部分数据在程序执行前被内核初始化为0或者NULL。
栈区:存储局部变量与函数形式参数。栈由程序自动管理。每个进程有各自的栈,最大长度固定,程序运行时栈中存储数据超过最大长度则发生栈溢出。
堆区:堆的空间由程序员管理,理论上可以使用除操作系统占用外的所有内存。申请与释放由程序员管理。

1、static关键字可以将变量声明为静态变量。即使变量装入数据区或bss区。不会进出栈,在程序开始时即被初始化,且在整个进程生命周期只初始化一次(无论定义于何处)。
2、当static修饰全局变量时,该变量只能在本文件中被访问,即使外部文件使用extern也无法访问。全局变量应该首先考录是否使用static。
3、当修饰函数时,同样无法i在其他文件中调用该函数。
4、c++中,static可以生命类的成员为静态成员。静态数据成员属于类二不属于实例化的对象,所以对象共享有一个静态数据成员,即使不存在实例化对象静态成员也会被分配内存空间。初始化要在类体外。
5、静态成员函数同样属于类,且只能访问静态数据成员。

多态

可以理解为一种行为有多种完成的方法。也就是同名的函数对应了多种实现,并在不同的情况下调用不同的实现方式。这样可以实现接口的统一性。

多态的实现分为动态联编和静态联编。
静态联编指在编译时实现多态性,这种多态成为静态多态。后者则是在执行阶段实现多态性,称为动态多态性。

静态多态性

静态多态性可通过函数重载和运算符重载实现。
运算符重载本质上也是函数重载。
运算符重载可通过成员函数重载和友元函数重载实现。

动态多态性

通过虚函数与基类的指针(引用)实现。
当基类成员函数声明为虚函数,派生类中出现同名函数,在基类指针指向基类时调用基类成员函数,指向派生类则调用派生类成员函数。

虚函数实现方式:

继承

封装

内存分配方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值