yofer张耀琦的专栏

数学之法,世界之道

C++中const的实现细节介绍(C,C#同理)

via:http://www.jb51.net/article/45755.htm 本篇文章主要是对C++中const的实现细节进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1、什么是const?   常类型是指使用类型修饰符cons...

2015-09-17 11:13:47

阅读数:614

评论数:0

C++中const的实现机制深入分析

via:http://www.jb51.net/article/32336.htm C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢?本文将对这两个问题进行一些分析,需要了解的朋友可以参考下 问题  C语言以及C++语言中的const究...

2015-09-17 09:43:25

阅读数:573

评论数:0

C++中将构造函数或析构函数定义为private

很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么?         当我们在程序中声明一个对象时,编译器为调用构造函数...

2015-09-14 13:44:29

阅读数:1774

评论数:0

构造函数为什么不能是虚函数

1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。...

2015-09-14 13:23:55

阅读数:436

评论数:0

C++11特性 - Smart Pointers 智能指针

已经有成千上万的文章讨论这个问题了,所以我只想说:现在能使用的,带引用计数,并且能自动释放内存的智能指针包括以下几种:         unique_ptr: 如果内存资源的所有权不需要共享,就应当使用这个(它没有拷贝构造函数),但是它可以转让给另一个unique_ptr(存在move构造函...

2015-09-02 14:21:56

阅读数:892

评论数:0

C++ 传参时传内置类型时用传值(pass by value)方式效率较高

来源:唐磊的个人博客《C++ 传参时传内置类型时用传值(pass by value)方式效率较高》 在《Effective C++》里提到对内置(C-like)类型在函数传参时pass by value比pass by reference更高效,当用OO的c++自定义类型(存在构造/...

2015-09-01 16:50:00

阅读数:948

评论数:1

中国象棋游戏Chess(2) - 走棋

之前的文章请看:中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制 现在实现走棋的功能。 首先需要获取点击到的棋子,用QWidget中的函数 mouseReleaseEvent 实现函数: void Board::mouseReleaseEvent(QMouseEvent *e...

2015-07-22 16:05:05

阅读数:1199

评论数:0

中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制

本项目都使用QT来实现绘图,没有任何第三方的资源。 工程详情:Github 首先将棋盘设计为一个类Board // Board.h // Board类实现了棋盘的绘制以及显示 // #ifndef BOARD_H #define BOARD_H #include #include &q...

2015-07-21 21:06:29

阅读数:4757

评论数:0

队列类 - 链式存储

代码: // linkqueue.hpp // 队列类 #pragma once #include "linklist.hpp" template class LinkQueue { public: LinkQueue(); ~LinkQueue(); publi...

2015-07-20 15:01:18

阅读数:442

评论数:0

栈类 - 链式存储

代码: // linkstack.hpp // 栈类 #pragma once #include "linklist.hpp" template class LinkStack { public: LinkStack(); ~LinkStack(); public...

2015-07-20 14:27:56

阅读数:484

评论数:0

队列链式存储 - 设计与实现 - API函数

队列相关基础内容参我的博文: 队列顺序存储 - 设计与实现 - API函数 队列也是一种特殊的线性表;可以用线性表链式存储来模拟队列的链式存储。 主要代码: // linkqueue.h // 队列链式存储API声明 #ifndef _LINKQUEUE_H_ #define _LIN...

2015-07-16 14:30:12

阅读数:721

评论数:0

队列顺序存储 - 设计与实现 - API函数

队列是一种特殊的线性表 队列仅在线性表的两端进行操作 队头(Front):取出数据元素的一端 队尾(Rear):插入数据元素的一端 队列不允许在中间部位进行操作! queue常用操作 销毁队列 清空队列 进队列 出队列 获取队头元素 获取队列的长度 队列也是一种特殊的线性表;可以用线性表顺...

2015-07-16 13:39:17

阅读数:665

评论数:0

栈应用 - 后缀表达式的计算

有关栈API详情参看我的另一篇博文: 栈的链式存储 - API实现 遍历后缀表达式中的数字和符号 对于数字:进栈 对于符号: 从栈中弹出右操作数 从栈中弹出左操作数 根据符号进行运算 将运算结果压入栈中 遍历结束:栈中的唯一数字为计算结果 #include #include "Link...

2015-07-13 19:48:54

阅读数:976

评论数:0

栈的应用 - 中缀表达式转后缀表达式

有关栈API详情请参看我的另一篇博文:栈的链式存储 - API实现 实例: 5 + 4=> 5 4 + 1 + 2 * 3 => 1 2 3 * + 8 + ( 3 – 1 ) * 5 => 8 3 1 – 5 * +  中缀表达式符合人类的阅读和思维习惯 后缀表达式符合计算...

2015-07-13 19:44:57

阅读数:644

评论数:1

栈的应用 - 就近匹配

链式存储栈的API详情参看我的博文:栈的链式存储 - API实现 就近匹配  几乎所有的编译器都具有检测括号是否匹配的能力 如何实现编译器中的符号成对检测? #include int main() { int a[4][4]; int (*p)[4]; p = a[0]; retur...

2015-07-13 17:12:21

阅读数:608

评论数:0

栈的链式存储 - API实现

基本概念 其他概念详情参看前一篇博文:栈的顺序存储 - 设计与实现 - API实现 这里也是运用了链表的链式存储API快速实现了栈的API。 代码: // linkstack.h // 链式存储栈的API声明 #ifndef _MY_LINKSTACK_H_ #define ...

2015-07-13 15:51:45

阅读数:1050

评论数:0

栈的顺序存储 - 设计与实现 - API实现

Stack基本概念 栈是一种 特殊的线性表 栈仅能在线性表的一端进行操作 栈顶(Top):允许操作的一端 栈底(Bottom):不允许操作的一端 Stack的常用操作 创建栈 销毁栈 清空栈 进栈 出栈 获取栈顶元素 获取栈的大小  栈模型和链表模型关系分析 栈的顺序存储设计与实现 ...

2015-07-13 13:37:49

阅读数:780

评论数:0

双向链表设计与API实现

为什么需要双向链表? 单链表的结点都只有一个指向下一个结点的指针 单链表的数据元素无法直接访问其前驱元素 逆序访问单链表中的元素是极其耗时的操作! 双向链表的定义 在单链表的结点中增加一个指向其前驱的pre指针 双向链表拥有单链表的所有操作 创建链表 销毁链表 获...

2015-07-12 20:03:37

阅读数:453

评论数:0

循环链表设计与API实现

基本概念 循环链表的定义:将单链表中最后一个数据元素的next指针指向第一个元素 循环链表拥有单链表的所有操作 创建链表 销毁链表 获取链表长度 清空链表 获取第pos个元素操作 插入元素到位置pos 删除位置pos处的元素 新增功能:游标的定义 在循环链表中可以...

2015-07-12 16:42:20

阅读数:693

评论数:0

C++链表模板类

思想和上篇文章差不多,只是换了层包装。 直接上代码: // linklist.h #include #include using namespace std; template struct Node { T t; Node *next; }; template class ...

2015-07-11 23:03:13

阅读数:1898

评论数:0

提示
确定要删除当前文章?
取消 删除