123讲,递增运算符的重载、赋值运算符的重载、关系运算符重载、函数调用运算符重载 递增运算符重载++ 注意传参类型和返回类型,以及要留意传参是传引用还是对象。 #include <iostream> #include "string" using namespace std; class Integer { frie…
121讲重载、加号运算符重载、左移运算符重载 运算符重载 概念:对于已有的运算符进行重新定义,赋予其另一种功能,以适应不同的数据类型 解决:对于内置的数据类型,编译器知道如何进行运算,那么自定义类型呢? #include <iostream> #include "string" using namespace std…
118讲 友元-全局函数做友元、友元类、成员函数做友元 全局函数做友元 友元打穿了访问权限,让特殊的函数或者成员能访问到私有属性。 //goodGay 全局函数是 Building的好基友,能访问,。让我访问。(打穿私有成员权限) friend void goodGay(Building* building); #include<iostre…
静态成员 静态成员变量 笔记见前面112讲部分 静态成员函数 静态成员函数可以访问静态成员变量。 静态成员函数 不可以 访问非静态成员变量。!!!!tip: 因为静态成员函数,不知道访问类的哪一个对象。 #include<iostream> #include"string" using namespace std; …
C++ 对象模型、this 指针 、空指针调用成员函数 、const修饰成员函数 成员变量 和成员函数分开存储 在C++ 中,类内的成员变量和成员函数分开存储。 只有非静态成员变量才属于类的对象上。 #include<iostream> #include"string" using namespace std; cl…
代码如图: Tip: 在类中 调用另外的类的初始化需要使用 “ 初始化列表 ” ,不知道为何使用传统显式/隐式定义会报错。。 #include <iostream> #include "string" using namespace std; class Phone { public: Phone(string pN…
拷贝构造函数调用时机 C++ 中拷贝构造函数调用时机通常有三种情况: 使用一个已经创建完毕的对象来初始化一个新对象 值传递的方式给函数参数传值 以值方式返回局部对象 详细笔记请看下方代码 笔记全在代码之中!! 注意: 值传递的时候是生成副本,会(自动)调用拷贝函数。 返回值时,也是返回副本,也会(自动)调用拷贝函数。 #include <io…
对象的初始化和清理 对象的 初始化和清理 是两个非常重要的安全问题 c++ 利用 构造函数 和 析构函数 解决上述问题,这两个函数编译器会自动调用,完成对象初始化和清理工作。 编译器会提供默认的空实现 的构造函数和 析构函数 构造函数:主要用于在创建对象时 为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。 析构函数:主要用于对象销毁前…
struct 和 class 区别 在C++ 中 struct 和 class 唯一的 区别 就在于 默认的访问权限不同!! struct 默认权限为公共 class 默认权限为私有 成员属性私有化 优点1:将所有成员属性设置为私有,可以自己控制读写权限。 优点2:对于读写权限,我们可以检测数据的有效性 比如年龄的设置,可以在 set 函数中用 i…
封装 封装是C++ 面向对象三大特性之一。 意义: 将属性和行为作为一个整体,表现在生活中的事物。 将属性和行为加以权限控制 语法:class 类名 { 访问权限: 属性 / 行为}; #include<iostream> using namespace std; //#define PI 3.14; 宏定义有问题。这里的PI 最好使用…