C++
adorable_
这个作者很懒,什么都没留下…
展开
-
类&对象
概念 对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性,灵活性和扩展性 C++不是纯面向对象的语言,而是基于面向对象的语言(c语言面向过程) 面向对象三大特性 封装、继承、多态封装:将数据和方法封装到一个类中类中有访问限定符 三种访问限定符public成员可从类外部直接访问,private/pr...原创 2018-03-21 22:47:46 · 269 阅读 · 0 评论 -
实现一个只能在栈上生成对象的类
方法一:类对象的构造是通过构造函数实现的,如果将构造函数声明为私有或者保护类型,在类外是不能调用构造函数的,也就不能在类外面new出对象。但这样同时也不能在类外定义对象。对此,我们可以在类里定义一个公有的接口返回成员函数生成的对象,之后在类外定义类时,只需调用这个函数即可 ,但这样还有缺陷,因为在类外只能通过类的对象来调用这个成员函数,所以应将这个接口声明为静态的。原创 2018-04-27 08:18:20 · 218 阅读 · 0 评论 -
实现一个只能在堆上生成对象的类
分析 对象可以在栈上生成,也可以通过new在堆上生成,如果只想要对象在堆上生成则需从类的内部结构入手。 类对象的构造是通过构造函数实现的,如果将构造函数声明为私有或者保护类型,那么在类外是不能调用构造函数的,在类外面也就不能从栈上生成对象。但这样同时也不能在类外new出一个对象。对此,我们可以在类里定义一个公有的接口返回成员函数new出的对象,之后在类外定义类时,只需调用这个函...原创 2018-04-27 08:24:12 · 283 阅读 · 0 评论 -
实现一个不能被继承的类
方法一:类对象的构造是通过构造函数实现的,如果将构造函数声明为私有或者保护类型,那么在类外是不能调用构造函数的,也就不能在类定义出对象。对此,我们可以在类里定义一个公有的接口返回成员函数生成的对象,之后在类外定义类时,只需调用这个函数即可 ,但这样还有缺陷,因为在类外只能通过类的对象来调用这个成员函数,所以应将这个接口声明为静态的。原创 2018-04-27 18:03:10 · 1018 阅读 · 0 评论 -
C++实现简单五子棋游戏
五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜。 规则(1)对局双方各执一色棋子。 (2)空棋盘开局。 (3)黑先、白后,交替下子,每次只能下一子。 (4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处...原创 2018-05-12 23:13:10 · 66035 阅读 · 22 评论 -
探索C++对象模型
多态的实现机制: C++中虚函数的主要作用就是实现多态。简单说父类的指针/引用调用重写的虚函数,当父类指针/引用指向父类对象时调用的是父类的虚函数,指向子类对象时调用的是子类的虚函数。 这是通过虚函数表实现的,虚函数表通过一段连续的内存存放虚函数的地址,解决了虚函数重写(地址覆盖)问题。在有虚函数的对象实例中都有一张虚函数表,虚函数表就像一张地图,指明了具体调用哪个虚函数。原创 2018-05-07 23:19:31 · 240 阅读 · 0 评论 -
C++知识体系框图
C++知识体系框图: 函数重载:https://blog.csdn.net/adorable_/article/details/79511025引用与指针:https://blog.csdn.net/adorable_/article/details/79550133类&对象:https://blog.csdn.net/adorable_/article/details/79...原创 2018-06-09 19:26:16 · 894 阅读 · 0 评论 -
平衡搜索树—AVLTree
基本实现:#pragma once#include <iostream>#include <assert.h>using namespace std;template<class K, class V>struct AVLTreeNode{ K _key; V _value; in原创 2018-07-16 23:54:51 · 208 阅读 · 0 评论 -
红黑树—RBTree
红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是Red或Black。通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡。红黑树是满足下面红黑性质的二叉搜索树:每个节点,不是红色就是黑色的根节点是黑色的如果一个节点是红色的,则它的两个子节点是黑色的(没有连续的红节点)对每个节点,从该节点到其所有后代...原创 2018-07-24 23:48:56 · 222 阅读 · 0 评论 -
set与map介绍
pair pair是一种模板类型,每个pair可以存储两个值,这两个值的类型可以是任何类型的。它定义在#include<utility> 中。 set(集合) map(映射)...原创 2018-08-06 23:58:40 · 289 阅读 · 0 评论 -
C++模板实现顺序表+双向链表+栈+队列
Vector.h#pragma once//类名 Vector//类型 Vector<T>template<class T>class Vector{public: Vector() //构造函数函数名与类名相同 :_start(NULL) , _finish(NULL) , _...原创 2018-05-17 15:34:15 · 339 阅读 · 0 评论 -
C++实现双向链表
C++实现双向链表原创 2018-04-26 17:51:14 · 804 阅读 · 0 评论 -
引用与指针
1.引用的概念及用法引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名 定义的格式:类型 & 引用变量名 = 已定义过的变量名 引用的特点: a)一个变量可取多个别名 b)引用必须初始化 c)引用只能在初始化的时候引用一次,不能改变为再引用其他的变量原创 2018-03-14 13:28:18 · 244 阅读 · 0 评论 -
关于C语言与C++中函数重载问题
1.函数重载定义 函数重载:函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。原创 2018-03-10 19:59:05 · 762 阅读 · 0 评论 -
日期类之运算符重载
运算符重载原创 2018-03-26 18:34:28 · 879 阅读 · 0 评论 -
C++实现String
浅拷贝 深拷贝总结:浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。String.h#pragma once#include <iostream>#include <stdio.h>#include <string....原创 2018-04-17 23:26:25 · 1073 阅读 · 0 评论 -
C++动态内存管理
动态内存管理C语言动态内存管理 C语言的动态内存分配通过系统提供的库函数来实现,主要有:malloc,calloc,realloc,free这四个函数。C++动态内存管理 C++通过new和delete(操作符)动态管理内存 new / delete动态管理对象 new[] / delete[]动态管理对象数组原创 2018-04-06 14:09:39 · 306 阅读 · 0 评论 -
引用计数写时拷贝
引用计数 除初始化对象以外,每个构造函数(拷贝构造除外)需建立一个引用计数,用来记录多少对象与正在创建对象共享一块内存空间,当有新的指针指向这块空间时,引用计数加1。当创建一个对象且此对象未与其他对象共用一块内存空间时,将引用计数初始化为1。 拷贝构造不分配新的引用计数,而是拷贝计数器,并递增计数器。原创 2018-04-19 10:21:08 · 389 阅读 · 0 评论 -
继承相关概念
继承关系(public继承、protected继承、private继承)基类的私有成员在派生类中不能被访问,如果一些基类成员不想被基类对象直接访问,但需要在派生类中访问,就定义为保护成员。保护成员限定符因继承而生public继承保持is-a原则,每个父类的成员子类也可以使用protected/private继承保持has-a原则,基类部分成员并未完全成为子类接口的一部分。(几乎很...原创 2018-04-23 18:30:12 · 260 阅读 · 0 评论 -
深度探究类和对象
【const成员函数】 const成员函数,const修饰的是this指针指向的对象,保证调用这个const成员函数的对象在函数内不被修改。【内联】【友元】原创 2018-03-30 16:32:08 · 288 阅读 · 0 评论 -
C++实现动态顺序表
C++实现动态顺序表原创 2018-04-25 21:39:20 · 716 阅读 · 0 评论 -
内存池
内存池概念 通常我们用new和malloc来分配内存的话,由于申请的大小不确定,所以频繁的使用时会带来内存碎片和效率降低的问题。为了克服这种问题提出了内存池的概念。内存池是一种内存分配方式。内存池的优点是可以有效的减少内存碎片化,分配内存更加快速,减少内存泄漏等优点。 内存池是在真正使用内存之前,先申请分配一个大的内存块留作备用。当真正需要使用内存的时候,就从内存池中分配一...原创 2018-08-08 23:55:12 · 480 阅读 · 0 评论