108讲-拷贝构造函数调用时机–构造函数调用规则–深拷贝与浅拷贝–初始化列表
拷贝构造函数调用时机 C++ 中拷贝构造函数调用时机通常有三种情况: 使用一个已经创建完毕的对象来初始化一个新对象 值传递的方式给函数参数传值 以值方式返回局部对象 详细笔记请看下方代码 笔记全在代码之中!! 注意: 值传递的时候是生成副本,会(自动)调用拷贝函数。 返回值时,也是返回副本,也会(自动)调用拷贝函数。 #include <io…
构造函数–析构函数–构造函数的分类及其调用
对象的初始化和清理 对象的 初始化和清理 是两个非常重要的安全问题 c++ 利用 构造函数 和 析构函数 解决上述问题,这两个函数编译器会自动调用,完成对象初始化和清理工作。 编译器会提供默认的空实现 的构造函数和 析构函数 构造函数:主要用于在创建对象时 为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。 析构函数:主要用于对象销毁前…
struct 和 class 区别–封装成员属性私有化–设计圆类(点和圆的关系)–如何设计类和头文件
struct 和 class 区别 在C++ 中 struct 和 class 唯一的 区别 就在于 默认的访问权限不同!! struct 默认权限为公共 class 默认权限为私有 成员属性私有化 优点1:将所有成员属性设置为私有,可以自己控制读写权限。 优点2:对于读写权限,我们可以检测数据的有效性 比如年龄的设置,可以在 set 函数中用 i…
类与对象-封装
封装 封装是C++ 面向对象三大特性之一。 意义: 将属性和行为作为一个整体,表现在生活中的事物。 将属性和行为加以权限控制 语法:class 类名 { 访问权限: 属性 / 行为}; #include<iostream> using namespace std; //#define PI 3.14; 宏定义有问题。这里的PI 最好使用…
函数补充:函数默认参数、函数的占位参数、函数重载
函数提高 函数默认参数 在c++ 中,函数的形参列表中的参数是可以有默认值的。 语法: 返回类型 函数名 (参数 = 默认值){} 注意事项: 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值。(不然编译器不知道你放入的值是不是在默认参数的位置) 如果函数声明有默认参数,函数实现就不能有默认参数。(编译时不知道用谁的默认参数…
89讲 C++中的引用
引用 引用的基本使用 作用:给变量起别名。 语法:数据类型 &别名 = 原名 #include <iostream> using namespace std; void main() { //引用的基本语法 int a = 10; //数据类型 &别名 = 原名; //创建引用 int& b = a; cout …
84讲 程序的内存模型(此时步入面向对象阶段)
内存分区模型:laughing: C++ 程序再执行时,将内存大方向划分为4 个区域 代码区:存放函数体的二进制代码,由操作系统进行管理 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,则程序结束时由操作系统回收 内存四区的意义: 不同的区域存放的数据,赋予…
通讯录管理系统
通讯录管理系统功能要求 菜单功能 清空联系人的方法 将当前联系人的数量清为0,做一个逻辑上的清空,让别的函数访问不了即可。 代码如下,该部分代码属于我提前实现好基本功能,再根据黑马c++的视频优化的。 #include <iostream> #include "string" #define MAX 3 //最大人数…
结构体案例
案例1如图 #include <iostream> #include "string" #include <ctime> using namespace std; /* 学校正在做毕设项目,每名老师带5 个学生,共有3 名老师,需求如下, 设计学生和老师的结构体,其中老师的结构体中,有老师姓名和一个存放5…