C++
文章平均质量分 61
DZ小明
__飘摇在星空的一颗星辰
__静摆在怒浪的一叶扁舟
展开
-
浅谈C++“多态”的一些现象
多态的概念 多态:一词最初来源于希腊语,意思是具有多种形式或形态的情形,在C++语言中多态有着更广泛的含义。静态多态 编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误。 就像一个同样逻辑的加法函数,但是类型不一样,我们在使用时编译器自己就会识别到底应该使用哪个函数。例如如下代码:int Add(原创 2017-03-07 21:43:27 · 375 阅读 · 0 评论 -
模板函数的使用
1. 模板的简单介绍 我们已经写过有C语言版、C++版的顺序表了。但是这只是对单一的确定的类型起作用的方法,但是对于我们想使用一个顺序表,但不用在任何时候都去编写一个专属于这个类型的文件,无论是C或者C++,那么我们怎么办呢? 运气的是,在C++的编译器里给我们提供了“模板”这个东西,使得代码复用率提高,使我们可以不用为了表示某一种类型就去专门编写一个专属此类型的文件。而且,如果去看C++里面的原创 2017-03-11 14:02:43 · 982 阅读 · 0 评论 -
模板类实现顺序表
#include <iostream>using namespace std;template<class T>class Vector{ //定义几个类型,以便于管理public: typedef T ValueType; typedef ValueType* Pointer; typedef const ValueType* ConstPointer;原创 2017-03-12 13:28:58 · 581 阅读 · 0 评论 -
模板类模拟实现List
上一篇中我模拟实现了vector,接着这个当然就是list了,首先对于list,在库函数里面,list是一个双向的,即既含有next域,也含有prev域,每个节点都含有这样的结构,我们在写的时候要把一个一个链接上,而且要保证逻辑正确,作者本人就在拷贝构造函数的时候懵逼了半天。所以一个表示节点的结构体必须有,这个当然也可以用类,但是你会感觉本质上你还是用类中结构体的性质,所以还是结构体方便一点。原创 2017-03-16 09:57:07 · 1241 阅读 · 0 评论 -
中缀表达式转后缀表达式并输出计算结果
后缀表达式又称逆波兰表达式,明显的特点是:逆波兰表达式中没有括号,计算时将操作符之前的第一个数作为右操作数,第二个数作为左操作数,进行计算,得到的值继续放入逆波兰表达式中。 但日常生活中我们总是习惯于写中缀表达式,所以需要先将中缀表达式转为后缀表达式。 假如中缀表达式为:12*(3+4)-6+8/2 在遇到数字时,我们直接输出,遇到符号,则入栈。但在入栈时,我们要判断栈内已有原创 2017-04-20 13:42:22 · 20381 阅读 · 16 评论 -
四种智能指针的用法和原理
智能指针共分为4种,即boost库中的auto_ptr、scoped_ptr、shared_ptr、weak_ptr。 智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。 操作的方法:在构造函数时,将类外需要管理的指针传进去,可以给个空的缺省值,然后重载“->”原创 2017-04-04 13:06:28 · 26430 阅读 · 4 评论 -
实现string类的几种方式
浅拷贝 浅拷贝的意思就是在拷贝构造函数、赋值运算符函数时并没有给新对象开辟一块空间,而是直接二者公用一块空间。这个问题就很麻烦了。 s1,s2共用一块空间,此时不论s1怎样修改,都会影响到s2,而且析构s1后,s2就无法继续使用。 简单代码实现如下: class String{public: String(char* pStr = "") {原创 2017-04-09 15:31:28 · 1587 阅读 · 0 评论 -
用C++的类完成玩骰子的游戏
我们生活中随处可见的玩骰子游戏,那么我们用C++的类实现出来时会是怎么样呢? 首先,是得到一个1-6之间随机数的写法 Random.h#ifndef RANDOM__H__#define RANDOM__H__using namespace std;#include <cstdlib>#include <ctime>class Random{public: Random();原创 2017-03-14 10:45:03 · 2431 阅读 · 0 评论 -
C++小结——表-类-继承-多态-模板-异常-智能指针
如有错误,请指出,我会第一时间改正。原创 2017-04-09 11:46:18 · 465 阅读 · 0 评论 -
如何创建对象的数组
创建对象我们都很熟悉,但是创建对象的数组(也就是相当于创建一个“int”类型的数组,而这个的元素是一个一个的对象)呢?可能在看到我解释的那么多后,你觉得应该是一个道理,但是事实上真的是如此吗? 假如我们按这种方法创建,看看编译器怎么说: int main(){ int const dimension = 10; string* pStr = new string[dim原创 2017-03-12 15:47:37 · 4038 阅读 · 0 评论 -
关于类和对象的浅析
类的定义: 类,最初步的说,其实就是对C语言中结构体的拓展。因为c++有了类,才使c++面向的是对象,也可以说是C语言和C++在明显的区别;在类中,我们可以自定义变量,自定义函数。并且,在类中,在类中,定义的变量默认的权限都是私有private的,即在类中,若你不声明一下变量或者函数为公共public的,编译器就会认为你这个是私有private的,私有的类型在类外无法对其进行访问原创 2017-02-16 20:35:20 · 306 阅读 · 0 评论 -
c++日期类的实现
#define _CRT_SECURE_NO_WARNINGS#include #include using namespace std;class Date{public: //构造函数 Date(int year = 1995, int month = 2, int day = 12) :_year(year) , _month(month) , _da原创 2017-02-18 21:16:54 · 451 阅读 · 0 评论 -
c++复数类的实现
复数是一个数学中很重要的东西,下面是我用c++实现的复数的类#define _CRT_SECURE_NO_WARNINGS#include using namespace std;#include class Plural{public: Plural(int real = 0, int image = 0) // 构造函数 : _real(real) , _原创 2017-02-18 21:20:13 · 718 阅读 · 0 评论 -
C++模板类实现顺序表
#define _CRT_SECURE_NO_WARNINGS#include using namespace std;#include #define length 10typedef int DataType;class Vector{public: // 构造函数 explicit Vector(size_t capacity = 100) //若不给原创 2017-02-26 22:08:36 · 357 阅读 · 0 评论 -
C++ 的 “继承”
首先,“继承”二字,可以用生活中的例子来理解,即:继承上一版本的功能,并继续发展下一版本的功能。它在C++里面可以使面向对象的程序设计代码复用,从而使C++更贴合面向对象这个方向。继承的概念: 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程原创 2017-03-01 17:40:40 · 340 阅读 · 0 评论 -
C++版双链表的实现
#define _CRT_SECURE_NO_WARNINGS#include using namespace std;#pragma oncetypedef int DataType;struct Node{ Node(const DataType& data = 0) : _data(data) , _pNext(NULL) , _pPre(NULL) {}原创 2017-03-02 21:44:33 · 286 阅读 · 0 评论 -
一眼就能看懂的cin.ignore()函数详解
看了很多网上的cin.ignore()函数的解析,发现万片一律,不知道是你抄我的还是我抄你的,还都没有注明转载,而且纯粹是教科书的死搬硬套。 希望我的这篇博客可以帮到大家。 首先,他的函数原型是这样的: istream& ignore (streamsize n = 1, int delim = EOF); 第一个参数n表示从输入到正式被赋值到变量的过程中,也就原创 2018-01-29 11:11:11 · 7337 阅读 · 7 评论