0.重载运算符时,*必须首先决定是将其声明为类的成员函数(有一个this指针)还是非成员函数!!!* 一般有下面的这样一些规则: 必须这样做的: =,[ ],( ) , -> 必须是成员函数 希望为类自定义IO运算符时 ,输入 >> 和输出 << 运算符必须是友元非成员函数 按你的想法和要求做的: += ,-= 等复合赋值运算符之类的一般来讲是成员,但并非必须,与 = 号完全不同. 改变对象状态的运算符或者是与给定类型密切相关的运算符,如:递增(++),递减(–)和 (*) 解引用运算符,通常来讲是成员函数 具有对称性的运算符(int + double)可能转换为任意一端的运算对象,例如:算术(+ - * / ),相等性(==),关系(< > != )和位运算符等,通常为非成员函数 不应该被重载的运算符: 1. ,(逗号) 2. & (取地址) 3. || (逻辑或) 4. && (逻辑与) 继续阅读 >>


刘生玺 18/03/14 21:49:23
多继承和多重继承导致的问题? 多继承:就是某一个类继承了好几个基类 多重继承:就是类被一层一层的继承 在上面的这幅图中,类B会拷贝一份A的数据,类C会拷贝一份A的数据,那么这时候类D再继承B和C的话,就会在类D中存在两份A的拷贝 。这是绝对不允许的 。一是浪费空间,二是存在二义性 举例如下: 农民工中就会存在两份人的数据 。 虚继承的出现和实现原理 ? 正因为上面所说的问题的出现,为了解决这个问题,提出了虚继承的概念 。 那么它是如何实现的呐? 虚继承底层实现原理与编译器相关,一般通过虚基类指针和虚基类表实现,每个虚继承的子类都有一个虚基类指针(占用一个指针的存储空间,4字节)和虚基类表(不占用类对象的存储空间)(需要强调的是,虚基类依旧会在子类里面存在拷贝,只是仅仅最多存在一份而已,并不是不在子类里面了);当虚继承的子类被当做父类继承时,虚基类指针也会被继承。 实际上,vbptr指的是虚基类表指针(virtual base table pointer),该指针指向了一个虚基类 继续阅读 >>


刘生玺 18/03/14 17:55:20
软件项目开发的文档编写标准化   在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。    ◇ 可行性分析报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。    ◇ 项目开发计划:为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。    ◇ 软件需求说明书(软件规格说明书):对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。    ◇ 概要设计说明书:该说明书是概要实际阶段的工作成 继续阅读 >>


刘生玺 18/03/06 22:24:14
1.隐藏的基本概念 什么是隐藏 ?就是说在下面的这种情况下,父类的ABC会在子类中进行隐藏,但是子类的确继承了父类的ABC函数 。如果一定要使用父类中的ABC,那么必须进行特殊处理。 (1)成员函数的隐藏 #include<iostream> #include<vector> #include<string> using namespace std; class Person{ public: Person(){ name = "父类初始化" ; } void play() { name = "由父类 Person 设置 " ; cout << "Person 中的 play 函数 " << endl ; } protected: string name ; }; class Worker : public Person { public 继续阅读 >>


刘生玺 18/02/26 22:16:13
1.继承的基本概念 1.类与类之间的关系 has-A,包含关系,用以描述一个类由多个“部件类”构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类。 use-A,一个类使用另一个类,通过类之间的成员函数相互联系,定义友元或者通过传递参数的方式来实现。 is-A,即继承关系,关系具有传递性。 2.继承的相关概念   万事万物皆有继承这个现象,所谓的继承就是一个类继承了另一个类的属性和方法,这个新的类包含了上一个类的属性和方法,被称为子类或者派生类,被继承的类称为父类或者基类。 3.继承的特点 子类拥有父类的一些属性和方法(除了构造函数和析构函数)。 子类可以拥有父类没有的属性和方法。 子类是一种特殊的父类,可以用子类来代替父类。 子类对象可以当做父类对象使用。 2. 继承一共有3种继承方式,适用于不同的场景,依情况而定 。 1.公有继承:访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数)。 适用场景:需要被 继续阅读 >>


刘生玺 18/02/26 20:27:36
这是在看侯捷C++视频的时候,他提出的一个问题,称之为单例模式(singleton),有两种实现方式(懒汉与饿汉),还有多线程,使用场景(工厂模式)等等一些相关的东西,更多了解可以去百度一下。在此就简单做一个总结。 方法一共有n个。根据侯老师所言,目前这两种是比较好的实现方式,所以找出来与大家分享一下。一是: #include<iostream> #include<vector> #include<string> using namespace std; class A{ public: static A& getObject() { return a ; } void set(int t){ temp = t ; } void print(){ cout << "temp == "<< temp << endl ; } 继续阅读 >>


刘生玺 18/02/25 13:44:13
首先先介绍一下工具: (1)一个移动无线网卡 (2)一个装有aircrack的linux(系统最好为kali), (3)靠谱的密码字典。 12 第一步,查看网卡信息 打开你的终端,查看一下当前的无线网卡 root@kali:~# airmon-ng 显示如下: 记住你当前的网卡名 wlan0mon 第二步,启动这个网卡 root@kali:~# airmon-ng start wlan0mon 第三步,开始探测附近的wifi root@kali:~# airodump-ng wlan0mon 然后显示如下: 选个目标,最好信号要好一点,PWR绝对值越小越好,选择好你的目标记住BSSID和CH之后,可以直接ctrl-c终止搜索。 第四步,监听路由 在终端里头继续输入 root@kali:~# airodump-ng -w woshoubao 继续阅读 >>


刘生玺 18/02/24 22:26:01
stack 的实现 1.特征:先进后出 。只能插入,删除,访问栈顶的元素 !! 2.实现 可以用 vector ,list ,deque 来实现。但是 vector和deque 的实现要比list实现的性能好 #include<iostream> #include<deque> using namespace std; template<class T ,class cont = deque<T> > //类模板 class stack{ cont tt ; public: T & top(){ return tt.front(); } void pop( ){ tt.pop_front() ; } void push(T temp){ tt.push_front(temp); } int size 继续阅读 >>


刘生玺 18/01/24 16:48:43
1.vector是什么? vector 基础知识 2.如何实现: 实现代码: #include<iostream> #include<vector> #define count 3 using namespace std; //目标就是完成二维vector的所有操作 int main(void) { vector<vector<int>> vec1(count) ; //二维数组的 vector 定义 //初始化一个3x3的矩阵,数值为 333 for(int i = 0 ;i < vec1.size() ;++i){ for(int j= 0 ;j < count ;++j){ vec1[i].push_back(333); } } //增加一行,数值为444 vector<int> temp ; 继续阅读 >>


刘生玺 18/01/01 15:09:44
什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll) 所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤: 静态库 之所以成为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件(.out)中。因此对应的链接方式称为静态链接。 试想一下,静态库与汇编生成的目标文件一起链接为可执行文件,那么静态库必定跟.o文件格式相似。其实一个静态库可以简单看成是一组目标文件(.o 文件)的集合,即很多目标文件经过压缩打包后形成的一个文件。静态库特点总结: 1.静态库对函数库的链接是放在编译时期完成的。 2.程序在运行时与函数库再无瓜葛,移植方便。 3.浪费空间和资源,因为所有相关的目标文件与牵涉 继续阅读 >>


刘生玺 17/12/13 23:42:25