
C++学习记录 三、C++核心编程(面向对象)
github实现STL相关项目。 微信小程序开发,具体功能待定。
发布日期:2021-05-08 14:29:35
浏览次数:16
分类:精选文章
本文共 1448 字,大约阅读时间需要 4 分钟。
C++核心编程学习笔记
一、内存分区模型
C++程序在执行时,将内存划分为4个区域:代码区、全局区、栈区和堆区。每个区域的内存管理方式和生命周期不同,理解这些区别对后续编程有重要意义。
1.1 代码区
- 存放CPU执行的机器指令。
- 代码区是共享的,只读的。
1.2 全局区
- 存放全局变量、静态变量以及常量。
- 该区域的数据在程序结束后由操作系统释放。
1.3 栈区
- 由编译器自动分配和释放,存放函数的参数值和局部变量。
- 栈区的数据在函数执行完后自动释放。
1.4 堆区
- 由程序员分配和释放,若不释放,程序结束时由操作系统回收。
- 主要利用
new
和delete
操作符进行内存管理。
2. 引用
2.1 引用的基本使用
- 引用用于给变量起别名,语法为
数据类型 &别名 = 原名
。 - 引用必须初始化,不能直接定义
int &b
。 - 引用一旦初始化后,不可以更改。
2.2 引用注意事项
- 引用可以作为函数参数和返回值。
- 常量引用用于修饰形参,防止实参被修改。
2.3 引用做函数参数
- 引用可以简化指针对实参的操作。
- 示例:
void mySwap(int &a, int &b) { int temp; temp = a; a = b; b = temp;}
2.4 引用做函数返回值
- 引用可以作为函数返回值存在。
- 示例:
int &test01() { static int a = 10; return a;}
2.5 引用的本质
- 引用的本质是指针常量,内部实现为
int *const ref = &a
。 - 引用指向的值可以修改,但指针本身不可改。
2.6 常量引用
- 常量引用用于修饰形参,防止实参被修改。
- 示例:
void showValue(const int &val) { cout << "val = " << val << endl;}
3. 函数
3.1 函数默认参数
- 语法:
返回值类型 函数名 (参数=默认值) {}
- 注意事项:默认参数必须从左到右连续,函数声明和实现只能有一个默认参数。
3.2 函数占位参数
- 占位参数用于占位,调用时必须填补。
- 示例:
void func(int a, int) {}
3.3 函数重载
- 函数名相同,满足条件:参数类型不同或个数不同。
- 示例:
void func(int &a) {}void func(const int &a) {}
4. 类与对象
4.1 封装
- 将属性和行为作为一个整体,控制访问权限。
- 访问权限有三种:public、protected、private。
4.2 对象的初始化和清理
- 构造函数和析构函数负责初始化和清理。
- 构造函数语法:
类名() {}
- 析构函数语法:
~类名() {}
4.3 构造函数的分类及调用
- 有参构造和无参构造。
- 拷贝构造函数用于拷贝其他对象的数据。
- 初始化列表用于简化初始化过程。
4.4 静态成员
- 静态成员变量和函数在所有对象中共享同一份数据。
4.5 this指针
- 用于区分对象,解决成员变量和成员函数同名冲突问题。
- 示例:
class Person { public: Person(int age) { this->age = age; } int age;}
4.6 常函数和常对象
- 常函数:成员函数后加
const
。 - 常对象:对象前加
const
。
5. 学习产出
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月05日 10时03分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
23种设计模式之迭代器模式
2019-03-06
23种设计模式之组合模式
2019-03-06
mysql zip安装
2019-03-06
mysql修改密码
2019-03-06
virtualbox中 Kali Linux安装增强功能
2019-03-06
virtualbox中 Ubuntu挂载共享文件夹
2019-03-06
Python 内置函数笔记
2019-03-06
BootStrapTable 错误
2019-03-06
PHP 脚本不报错
2019-03-06
代码整洁之道小结
2019-03-06
悲观锁与乐观锁
2019-03-06
js new Date 创建时间默认是8点
2019-03-06
Python实现cmd命令连续执行
2019-03-06
罗马数字
2019-03-06
IO多路复用小故事
2019-03-06
纠错码简介
2019-03-06
码云 Pages 搭建
2019-03-06
《论可计算数及其在判定上的应用》简单理解
2019-03-06
中国剩余定理证明过程
2019-03-06
kafka告警简单方案
2019-03-06