复习
ddiioopp123
这个作者很懒,什么都没留下…
展开
-
【复习】C++之实现链表类
#include<iostream>using namespace std;class CList{private: struct Node { int nValue; Node* pNext; }; Node* m_pHead; //链表头尾,长度 Node* m_pEnd; int m_nLength;public: CList() //创...原创 2020-07-14 08:32:10 · 115 阅读 · 0 评论 -
【复习】C++之重载操作符operator
重载操作符就是为了实现类的多态性,让运算符与类结合,产生新的含义。使用类的成员函数或友元函数(类外的普通函数)实现。//重载+,=,<<,>>#include<iostream>using namespace std;//重载操作符一定要有一个对象参与class CNum{public: int m_a;public: CNum...原创 2019-04-17 14:06:43 · 286 阅读 · 0 评论 -
【复习】C++之头文件,宏定义,枚举,内联函数
头文件:头文件主要作用在于多个代码文件全局变量的重用、防止定义的冲突,对各个被调用函数给出一个描述,其本身不需要包含程序的逻辑实现代码,它只起描述性作用,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。以下定义一个person类CPerson.h //.h文件是不参加编译的class CPerson{private: int...原创 2019-04-16 17:15:20 · 822 阅读 · 0 评论 -
【复习】C++之static成员
当类中只有一个int成员时,这个类的大小为4,。但是类中只有一个静态int成员时,这个类的大小为1。#include<iostream>using namespace std;class CPerson //只有一个int成员时{public: int num;};int main(){ cout << sizeof(CPerson) &...原创 2019-04-16 13:27:29 · 178 阅读 · 0 评论 -
【复习】C++之MyList
设计原则:单一职责可读性,维护修改,安全,构造析构#include<iostream>using namespace std; struct Node{ int nValue; Node* pNext;};class CList //链表类{private: Node* m_pHead; //链表头尾,长度 Node* m_pEnd; in...原创 2019-04-16 12:45:48 · 247 阅读 · 0 评论 -
【复习】C++之抽象类与接口类
首先,需要知道纯虚函数的意思。纯虚函数在父类不实现,强制要求子类一定要实现这个函数。可用于实例化对象的类被称为具体类,也就是子类。包含纯虚函数的类是一个抽象类,是不能定义对象的。class CPerson //抽象类{public: virtual void Show()=0; //纯虚函数};class CChina :public CPerson //...原创 2019-03-26 10:41:53 · 153 阅读 · 0 评论 -
【复习】C++之虚析构
new分配空间,调用构造函数,返回这个空间的地址。delete先调用析构,回收对象自己的空间。调用析构要看指针的类型。虚析构,通过父类的指针删除子类的对象,防止内存泄漏。这个类要实现多态,或者这个类有虚函数,那么这个类的析构也应该是虚函数。...原创 2019-03-26 10:29:39 · 137 阅读 · 0 评论 -
【复习】C++之const成员
const int num = 0; // 常量必须要初始化,而且不可修改。====================================================int num = 100;const int *p = #在这两句代码后,p可以修改,*p不可以修改。int num = 100;int *const p = &nu...原创 2019-03-18 19:06:56 · 235 阅读 · 0 评论 -
【复习】C++之this,函数隐藏参数
类的普通成员,一定得类的对象调用。类中的普通变量,定义对象的时候存在的。类中的函数,编译的时候就放到代码区,只有一份。类中的函数有个隐藏的参数,是当前这个类的指针,叫this,装调用的那个对象的地址,完成封装。...原创 2019-03-18 18:23:46 · 130 阅读 · 0 评论 -
【复习】C++之对象种类,new与malloc
1.局部对象,生命周期:当前这个作用域。2.全局对象,生命周期:当前程序结束。3.new在堆区的对象,生命周期:delete。可以出发构造函数与析构函数。CPerson* ps = new CPerson;delete ps;ps = NULL;4.临时对象,生命周期:当前这一行。CPerson();5.malloc创建对象时,是单纯的分配空间与释放空间,不触发构造...原创 2019-03-18 18:10:12 · 497 阅读 · 0 评论 -
【复习】C++之虚函数与多态
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。对C++了解的人都应该知道虚函数是通过一张虚函数表来...原创 2019-03-19 17:48:00 · 165 阅读 · 0 评论 -
【复习】C++之类之间的关系
类间的关系有很多种,在大的类别上可以分为两种:纵向关系、横向关系。====================================================================================================纵向关系就是继承关系。类的继承,是新的类从已有类的那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基...原创 2019-03-19 15:58:07 · 222 阅读 · 0 评论 -
【疑问】对异常安全性的了解
1.不泄漏任何资源;2.不允许破坏数据。原创 2019-03-05 17:07:30 · 146 阅读 · 0 评论 -
【疑问】使用构造函数什么情况才会内存不足 new异常
剑指offer面试1添加赋值运算符函数,在给出高级解法时,说在分配内存前先用delete释放了m_pData的内存,如果此时内存不足导致new char抛出异常。这个意思是电脑内存会不足吗?CMyString& CMyString::operator=(const CMyString& str){ if(this==&str) return ...原创 2019-03-05 17:02:42 · 300 阅读 · 0 评论 -
【疑问】赋值运算符函数
1.函数返回值的类型声明为该类型的引用,并在函数结束前返回实例自身的引用(*this)。return *this;2.参数类型声明为常量引用,使用count关键字。3.注意释放内存空间,避免内存泄漏。4.判断传入参数与当前实例(*this)是不是同一个。if(this == &str) return *this;或者if(this != str)...原创 2019-03-05 16:53:35 · 101 阅读 · 0 评论 -
C++多态
1.什么是多态?通过父类的指针调用实际子类的成员函数,使父类的指针有多种形态。2.多态通过什么实现的?通过虚函数重写完成的。多态是基于虚函数,虚函数需要重写。3.多态实现原理?通过维护一个虚函数列表(v_table),表的每个元素都是一个函数指针,函数指针指向虚函数,或者重写的虚函数(子类重写了,把这个元素覆盖),还需要记录这个表的指针(vfptr),创建的对象是谁这个指针就指...原创 2018-11-19 10:17:38 · 104 阅读 · 0 评论