C++进阶
一起学习C++
南往无念
这个作者很懒,什么都没留下…
展开
-
C++进阶15(多继承语法)
#include <iostream>using namespace std;//C++中允许一个类继承多个类//语法:class 子类:继承方式 父类1,继承方式 父类2//多继承可能会引发父类中有同名成员出现,需要加作用域区分class Base1{public: Base1() { m_A = 100; } int m_A; };class Base2{public: Base2() { m_B = 200; m_A = 300原创 2021-08-07 01:34:35 · 71 阅读 · 0 评论 -
C++进阶14(同名成员)
同名成员处理#include <iostream>using namespace std;/*问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?访问子类同名成员 直接访问即可访问父类同名成员 需要加作用域*/ class Base{public: Base() { m_A = 100; } void func() { cout << "Base - func()调用" << endl; } vo原创 2021-07-27 22:39:37 · 88 阅读 · 0 评论 -
C++进阶13(继承中的对象模型、构造和析构的顺序)
#include <iostream>using namespace std;//继承中的对象模型class Base{public: int m_A;protected: int m_B;private: int m_C;};//父类中所有的非静态的成员属性都会被子类继承下去//父类中私有成员属性是被编译器给隐藏了,因此时访问不到的,但是确实被继承下去了class son :public Base{public : int m_D;};//利用开发原创 2021-06-09 17:19:02 · 62 阅读 · 1 评论 -
C++进阶12(继承和继承方式)
继承的基本语法:继承是面向对象的三大特性之一我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码继承的基本语法:class 子类 : 继承方式 父类子类也成为派生类 父类也称为基类例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好#include <iostream>using n原创 2021-06-09 16:51:23 · 83 阅读 · 0 评论 -
C++进阶11(运算符重载(赋值、关系运算符、函数调用运算符))
赋值运算符重载#include <iostream>using namespace std;/*c++编译器至少给一个类添加4个函数:默认构造函数(无参,函数体为空)默认析构函数(无参,函数体为空)默认拷贝构造函数,对属性进行值拷贝赋值运算符 operator=, 对属性进行值拷贝如果类中有属性指向堆区,做赋值操作时也会出现深浅拷贝问题*///赋值运算符重载class Person{public: Person(int age) { m_Age = ne原创 2021-06-08 18:17:26 · 260 阅读 · 0 评论 -
C++进阶10(运算符重载(递增++、递减--))
递增运算符重载注意前置递增和后置递增在重载是的区别#include <iostream>using namespace std;//通过重载递增运算符,实现自己的整型数据//自定义的整型class MyInteger{ friend ostream& operator<<(ostream& cout, MyInteger myint);//友元public : MyInteger() { m_num = 0 ; } //重载前置原创 2021-06-08 14:03:53 · 300 阅读 · 1 评论 -
C++进阶9(运算符重载1(加号、左移))
加号运算符重载对于内置的数据类型的表达式的运算符是不可能改变的 不要滥用运算符重载#include <iostream>using namespace std;/*运算符重载的概念对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型对于内置的数据类型,编译器知道如何进行运算*///加号运算符重载//作用:实现两个自定义数据的相加的运算class Person{public: //通过成员函数重载了加号运算符 Person operator+(Pers原创 2021-06-07 20:18:26 · 76 阅读 · 0 评论 -
C++进阶8(友元)
友元生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现:全局函数做友元类做友元成员函数做友元全局函数作为友元#include <iostream>using name原创 2021-06-03 13:20:14 · 51 阅读 · 0 评论 -
C++进阶7(this指针、const修饰成员函数)
this指针定义概念#include <iostream>using namespace std;/*通过4.3.1我们知道在C++中成员变量和成员函数是分开存储的每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码那么问题是:这一块代码是如何区分那个对象调用自己的呢?c++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象this指针是隐含每一个非静态成员函数内的一种指针this指针不需要定义,直接使原创 2021-06-02 17:10:04 · 205 阅读 · 0 评论 -
C++进阶6(类对象作类成员、静态成员函数)
类对象作为类成员,在C++中一个类的对象可以作为另一个类的成员#include <iostream>using namespace std;//C++中类的成员可以是另一个类的对象,我们称为改成员为对象成员class phone{public : string m_pname; phone(string pName)//先构造phone的构造函数,在构造person的构造函数 { cout << "Phone的构造函数调用" << endl;原创 2021-06-02 11:23:26 · 148 阅读 · 0 评论 -
C++进阶5(构造函数)
构造函数和析构函数#include <iostream>using namespace std;/*对象的初始化和清理生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题一个对象或者变量没有初始状态,对其使用后果是未知同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问原创 2021-06-01 17:56:24 · 101 阅读 · 0 评论 -
C++进阶4(类和对象——封装)
封装意义1//类和对象//C++面向对象的三大特性为:封装,继承,多态//C++认为万事万物皆为对象,对象上有其属性和行为//例如:// 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌…// 车也可以作为对象,属性有轮胎、方向盘、车灯…, 行为有载人、放音乐、放空调…// 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类/*封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制*原创 2021-05-27 18:39:33 · 48 阅读 · 0 评论 -
C++进阶3(函数提升学习)
函数默认参数,函数占位参数,函数重载,以及函数重砸的注意事项,函数重载避坑#include <iostream>using namespace std;//函数提高.// 函数默认参数部分//在C++中函数的参数列表中的形参是可以有默认值的//语法:返回值类型 函数名 (参数=默认值){}int func1(int a, int b=20, int c=30){ return a + b + c;}//注意事项 /*1.如果某位置有了默认参数,从该位置往后,从左到原创 2021-05-25 11:18:54 · 71 阅读 · 0 评论 -
C++进阶2(引用)
#include <iostream>using namespace std;//引用做函数参数部分//作用:函数传参时,可以利用引用的技术让形参修饰实参,可以简化指针修饰实参//交换函数//1.值传递 void swap01(int a, int b)//值传递,形参不会修饰实参{ int temp = a; a = b; b = temp; cout << "swap01中的a1=" << a << endl; cout &l原创 2021-05-24 12:45:26 · 50 阅读 · 0 评论 -
C++进阶1(内存四区)
自此就开始C++的核心编程学习#include <iostream>using namespace std;//C++面向对象编程技术/*内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值, 局部变量等 堆区:由程序员分配和释放, 若程序员不释放, 程序结束时由操作系统回收 不同区域存放的数据,赋予不同的生命周原创 2021-05-23 20:07:13 · 45 阅读 · 0 评论