随笔分类 -  c、c++语言 经典基础

摘要:一、前言 最近在看代码,写代码的人很喜欢用回调函数和函数指针。一直觉得回调函数和函数指针挺神秘的,所以查了一些资料,来与大家一起来分享。 1、什么是回调函数 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 2、为什么要使用回调函数 因为使用回调函数可以... 阅读全文
posted @ 2013-10-06 22:14 aoguren 阅读(363) 评论(0) 推荐(1)
摘要:1、前言 Shunting yard算法(调度场算法)是一个用于将中缀表达式转换为后缀表达式的经典算法,由艾慈格.迪杰斯特拉引入,因其操作类似于火车编组场而得名。 例如:3+4 1)将3入输出队列(每当输入一个数字时,直接进入输出队列) 2)将+号压入运算堆栈 3)将4入输出队列 4)输入结束,将操作符堆栈中剩余操作符入输出队列 通过这个例子可以简单的看出两个规则: 当读入一... 阅读全文
posted @ 2013-09-25 21:38 aoguren 阅读(644) 评论(0) 推荐(0)
摘要:一、前言 我们平时计算都是使用十进制数,但是有时候我们需要用到二进制数、十六进制数等。在进制转换中,我们主要需要掌握的是十进制转换成N进制和N进制转换成十进制,而对于任意进制之间的相互转换,例如:P进制转换成R进制。 1、将P进制转换成对应的十进制M; 2、将十进制M转换成R进制。 二、进制转换 2.1 进制的基本结构 提到不同进制的数,就必然要涉及到数... 阅读全文
posted @ 2013-09-17 16:38 aoguren 阅读(3304) 评论(0) 推荐(0)
摘要:一、字符串拷贝 题目描述: 要求实现库函数strcpy, 原型声明:extern char *strcpy(char *dest,char *src); 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 分析:如果编写一个标... 阅读全文
posted @ 2013-09-06 14:25 aoguren 阅读(319) 评论(0) 推荐(0)
摘要:前言 1、重载运算符的定义 定义一个重载运算符就像定义一个函数,只是该函数的名字是operator@,这里@代表运算符。比如返回类型 operator ,=。bool operator == (const A& ); bool operator != (const A& );bool operator (const A& );bool operator >= (const A& );3.... 阅读全文
posted @ 2013-09-03 10:15 aoguren 阅读(318) 评论(0) 推荐(0)
摘要:一、前言:C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。 reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。 4种类型转换的格式,如:TYPE B = static_cast(TYPE)(... 阅读全文
posted @ 2013-08-17 12:27 aoguren 阅读(232) 评论(0) 推荐(0)
摘要:——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2、当我们调用一个重载的函数时,又是如何去解析的?(即怎么知道调用的是哪个函数呢)这两个问题是任何支持函数重载的语言都必须要解决的问题!带着这两个问题,我们开始本文的探讨。本文的主要内容如下:1、例子引入(现象)什么是函数 阅读全文
posted @ 2013-08-17 12:08 aoguren 阅读(300) 评论(0) 推荐(0)
摘要:一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp]view plaincopyinta=100;intb=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp]view plaincopy#includeusingnamespacestd;classCExample{private: inta;public://构造函数 CExample(intb) {a=b;}//一般函数 voidShow() {coutusingnamespacestd;classCExample{p 阅读全文
posted @ 2013-08-17 12:05 aoguren 阅读(420) 评论(0) 推荐(1)
摘要:一、题目:class String{public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~String(void); // 析构函数 String & operator = (const String &other); // 赋值函数private: char *m_data; // 用于保存字符串};各个解析:1、构造函数 /* 1... 阅读全文
posted @ 2013-08-15 17:27 aoguren 阅读(5807) 评论(2) 推荐(1)
摘要:一、要理解指针,必须弄清指针的三方面内容:指针的类型;指针所指空间存储数据的类型;指针的值及存储指针值的空间大小;我们通过例子进行说明:(1) int *p;(2) char *p;(3) int **p;(4) int (*p)[3];1、指针的类型 从语法的角度讲,只要把定义中的指针名字去掉,剩下的部分就是这个指针的类型,上例中各个指针的类型为:(1) int *p; // 指针的类型是 int*(2) char *p; // 指针的类型是 char*(3) int **p; // 指针的类型是 int**(4) int (*p)[3]; ... 阅读全文
posted @ 2013-07-04 21:57 aoguren 阅读(309) 评论(0) 推荐(0)