C++面向对象
文章平均质量分 89
C++的内存分区模型、引用、函数进阶、类和对象。文件I/O。
NewsomTech
知之非艰,行之惟艰。
展开
-
C++内存分区模型(代码区、全局区、栈区、堆区、new & delete)
文章目录0 内存分区模型1 程序运行前2 程序运行后3 new操作符0 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1 程序运行前 在程序编译后,生成了exe可执行程序,未执行该程原创 2021-01-13 17:09:41 · 627 阅读 · 2 评论 -
C++引用(变量引用、数组引用与数组指针、引用本质-指针常量、常量引用)
文章目录1 引用的基本用法2 引用注意事项3 引用做函数参数4 引用做函数返回值5 引用的本质6 常量引用1 引用的基本用法作用:为变量起别名。语法:数据类型 &别名 = 原名;示例:int main() { int a = 5; int &b = a; //引用:为变量起别名 cout << "a = " << a << endl; //5 cout << "b = " << b << endl;原创 2021-01-16 12:26:02 · 5093 阅读 · 0 评论 -
C++函数进阶(内联函数、默认参数、占位参数、函数重载、extern “C“)
文章目录1 内联函数(inline function)1.0 内联函数的引出2 函数默认参数3 函数占位参数4 函数重载4.1 函数重载概述4.2 函数重载注意事项1 内联函数(inline function)1.0 内联函数的引出宏函数:优点:以空间换时间,消耗内存空间以节省普通函数入栈与出栈的时间开销2 函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名 (参数= 默认值){}示例:int func(int a, int b = 10, int原创 2021-01-22 23:01:58 · 394 阅读 · 0 评论 -
C++类和对象(一):封装
文章目录0 类和对象1 封装的意义2 结构体struct和类class区别3 成员属性设置为私有0 类和对象C++面向对象的三大特性:封装、继承、多态。C++中==“万物皆对象”==,对象包含属性(成员变量)和行为(成员函数)。1 封装的意义封装的意义:(1)将属性和行为作为一个整体,表征现实的事物;(2)对属性和行为进行权限控制。实例化:通过类创建一个对象封装意义一: 在设计类的时候,属性和行为写在一起,表现事物语法: class 类名{ 访问权限: 属性 / 行为 };原创 2021-01-24 22:00:38 · 367 阅读 · 0 评论 -
C++类和对象(二):对象的初始化和清理
文章目录1 构造函数和析构函数1.1 对象初始化和清理的背景1.2 构造函数和析构函数的特点1.3 构造函数(可重载)1.4 析构函数(不可重载)2 构造函数的分类及调用3 拷贝构造函数调用时机4 构造函数调用规则5 深拷贝与浅拷贝6 初始化列表7 类对象作为类成员8 静态成员1 构造函数和析构函数1.1 对象初始化和清理的背景背景:对象的初始化和清理涉及程序安全。①对象或变量使用前若未初始化,则程序运行结果存在不确定性;②对象或变量使用完毕后若未及时清理,则会导致内存泄露。1.2 构造函数原创 2021-02-04 00:02:06 · 601 阅读 · 9 评论 -
C++类和对象(三):C++对象模型和this指针
文章目录1 成员变量和成员函数分开存储2 this指针3 空指针访问成员函数4 const修饰成员函数(常函数与常对象)1 成员变量和成员函数分开存储C++中,类的成员变量和成员函数分开存储。只有非静态成员变量属于类的对象,占用对象的内存空间。注1:非静态成员函数和静态成员(包括静态成员变量与静态成员函数)均不属于类的对象,不占用对象的内存空间。注2:非静态成员函数并非某个对象独有,内存中仅存在一份数据(一份函数实例)。不同对象的某个非静态成员函数共享同一个函数实例,即多个同类型的对象会共用一块原创 2021-02-05 00:14:21 · 284 阅读 · 0 评论 -
C++类和对象(四):友元(全局函数、类、成员函数作友元)
文章目录4.4.1 全局函数做友元4.4.2 类做友元4.4.3 成员函数做友元生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元4.4.1原创 2021-02-06 00:17:27 · 835 阅读 · 0 评论 -
C++类和对象(五):运算符重载
文章目录4.5.1 加号运算符重载4.5.2 左移运算符重载4.5.3 递增运算符重载4.5.4 赋值运算符重载4.5.5 关系运算符重载4.5.6 函数调用运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型4.5.1 加号运算符重载作用:实现两个自定义数据类型相加的运算class Person {public: Person() {}; Person(int a, int b) { this->m_A = a; this->m原创 2021-02-10 02:30:11 · 667 阅读 · 0 评论 -
C++类和对象(六):继承
文章目录4.6 继承4.6.1 继承的基本语法4.6.2 继承方式4.6.3 继承中的对象模型4.6.4 继承中构造和析构顺序4.6.5 继承同名成员处理方式4.6.6 继承同名静态成员处理方式4.6.7 多继承语法4.6.8 菱形继承4.6 继承继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WY2VmVws-1612893021684)(assets/1544861202252.png)]我原创 2021-02-13 02:33:56 · 1182 阅读 · 2 评论 -
C++类和对象(七):多态(多态原理、纯虚函数与抽象类、虚析构与纯虚析构)
文章目录4.7 多态4.7.1 多态的基本概念4.7.2 多态案例一-计算器类4.7.3 纯虚函数和抽象类4.7.4 多态案例二-制作饮品4.7.5 虚析构和纯虚析构4.7.6 多态案例三-电脑组装4.7 多态4.7.1 多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定原创 2021-02-14 00:18:23 · 350 阅读 · 0 评论 -
C++文件I/O操作(文本文件、二进制文件)
文章目录5.1文本文件5.1.1写文件5.1.2读文件5.2 二进制文件5.2.1 写文件5.2.2 读文件程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream:原创 2021-02-14 20:40:19 · 719 阅读 · 0 评论