偶尔e网事

Work in Cocos2d-x Team.

【C++基础之二十一】菱形继承和虚继承

菱形继承是多重继承中跑不掉的,Java拿掉了多重继承,辅之于接口。C++中虽然没有明确说明接口这种东西,但是只有纯虚函数的类可以看作Java中的接口。在多重继承中建议使用“接口”,来避免多重继承中可能出现的各种问题。 1.菱形继承 先看一下菱形继承长什么样。 B和C从A中继承,而D多重...

2014-01-05 09:05:41

阅读数:12597

评论数:2

【C++基础之二十】可变参数的函数

C++中可变参数的函数是从C中继承而来,可变参数的函数是指函数的参数个数可变,参数类型不定的函数。我们最常见的就是printf()。 1.可变参数函数实现原理 指定参数的函数实现很简单,通过通过指定的参数名访问就行了。但是如果不指定的呢?函数的调用的参数会进行压栈处理,详细可见此文函数调用机制...

2013-12-24 09:55:02

阅读数:19196

评论数:3

【C++基础之十九】函数对象

函数指针倒是蛮常见的,这函数对象又是什么呢?什么时候会用到函数对象? 1.什么是函数对象 函数对象就是定义了函数调用操作符,也就是operate()的对象。因此我们可以在定义函数调用操作符的时候,实现所需的函数功能。 2.示例 如上,其实最主要的还是operate()的定义,这和普...

2013-12-20 09:05:47

阅读数:3125

评论数:1

【C++基础之十八】类继承中的隐藏规则

记得以前看林锐博士的《高质量C++编程指南》一书有提到类继承中的隐藏问题,当时网上也有不同的声音,觉得并没有隐藏这个东西,后来在看C++ primer的时候确实有提到这个问题(谓之“屏蔽”),这里记下来,如果理解有误,还请指出。 1.重载和覆盖 在了解隐藏之前,得先分清楚重载和覆盖。 (1)重...

2013-12-10 15:01:46

阅读数:3004

评论数:7

【C++基础之十七】抑制由构造函数定义的隐式转换

有时候构造函数的隐式转换可以帮我们不少忙,但有时候它也会帮倒忙。所以我们应该要控制它,而不是让它无脑操作。 1.示例 先看一段代码。 #include "stdafx.h" using namespace std; class A { public: A(int v):...

2013-11-28 15:38:30

阅读数:3277

评论数:1

【数据结构之排序2】直接插入排序

插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 本节介绍两种插入排序方法:直接插入排序和希尔排序。 直接插入排序基本思想 1.基本思想 假设待排序的记录存放在数组R[1..n]中...

2013-10-21 15:49:08

阅读数:1966

评论数:0

【C++基础之十六】数组传参

1.一维数组 数组作为传参,其实传入的只是数组的首地址。实质上也是值拷贝。调用函数内部会有一个备份,这个备份指向了数组的首地址,所以数组元素可以在调用函数中被改变。由于调用函数只知道数组的首地址,并不知道数组元素的个数,所以一般我们将数组元素个数也传入。 第一种实现: int sum(int a...

2013-09-28 20:08:15

阅读数:4788

评论数:0

【C++基础之十五】内联函数

1.优点 为什么使用内联函数,而不使用宏定义,虽然宏本身采用的展开来替代函数调用的压栈出栈返回等操作,提高了代码的效率,但是会有两个问题: (1)边际效应 宏只是展开代码而已,所以在一些操作符的优先级问题使用上很容易出现异常。 #define ADD(x,y) x+y; int _tmain(...

2013-09-26 17:32:26

阅读数:2817

评论数:0

【C++基础之十四】函数的缺省参数

可能会有这么一个函数,在大部分的情况下,我们不用给它传递参数,但在某些特殊情况下,我们需要给它传递参数,那怎么办呢? 简单啊,写两个一样的方法,一个带参,一个不带参。。。 这样也太没水准了。来点高端的。。。函数的缺省! 函数的缺省,在编译的时候,默认参数由编译器自动插入。这里主要要注意两点。 ...

2013-09-25 17:32:24

阅读数:2889

评论数:0

【C++基础之十三】指向指针的指针

话说这玩意真不好理解,一般也不会用到,不过还是拿出来看看,叔到用时方恨嫂啊! 我们从一个例子来看它。 1.一个常见的错误 这个错误在第三篇局部变量的返回里就有讲过了。详见http://blog.csdn.net/jackystudio/article/details/11523353 因为系统...

2013-09-24 17:31:30

阅读数:7169

评论数:6

【C++基础之十二】虚函数表和覆盖机制

1.引出 我们先来看个例子: //空类 class A{}; //int成员变量 class B{ int value; }; //普通成员方法 class C{ void f(){}; }; //虚函数 class D{ virtual void g(){}; }; //两个虚函数 cl...

2013-09-23 17:33:46

阅读数:5231

评论数:13

【C++基础之十一】虚函数的用法

虚函数的作用和意义,就不进行说明了,这里主要讨论下虚函数的用法。 1.典型的虚函数用法 可以看到,只有标识为virtual的函数才会产生多态的效果,而且是编译多态。它只能借助指针或者引用来达到多态的效果。 class A { public: virtual void f(){cout<...

2013-09-22 15:38:42

阅读数:8430

评论数:3

【C++基础之十】友元函数和友元类

1.概述 友元提供了一种 普通函数或者类成员函数 访问另一个类中的私有或保护成员 的机制。也就是说有两种形式的友元: (1)友元函数:普通函数对一个访问某个类中的私有或保护成员。 (2)友元类:类A中的成员函数访问类B中的私有或保护成员。 2.特性 优点:提高了程序的运行效率 缺点:破坏了类的...

2013-09-18 11:40:06

阅读数:27980

评论数:5

【C++基础之九】单例模式

1.作用 单例模式目的就是为了保证一个类只有一个实例。 2.原理 (1)私有静态指针变量实现:使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。 (2)静态局部变量实现:在公有静方法中定义指向该类的一个静态局部变量,并返回该静态局部变量。 3.实现 3.1.私有静...

2013-09-17 11:49:43

阅读数:5258

评论数:1

【C++基础之八】函数指针和回调函数

C++很多类库都喜欢用回调函数,MFC中的定时器,消息机制,hook机制等待,包括现在在研究的cocos2d-x中也有很多的回调函数。 1.回调函数 什么是回调函数呢?回调函数其实就是一个通过函数指针调用的函数!假如你把A函数的指针当作参数传给B函数,然后在B函数中通过A函数传进来的这个指针调用A...

2013-09-16 09:40:06

阅读数:30256

评论数:5

【C++基础之七】extern关键字

1.作用 (1)放在函数或者变量前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 (2)与“C”连用,作为连接指定。 2.具体解释及示例 2.1.extern的变量和函数声明 extern用于修饰变量或函数,用于声明当前变量或函数可以在本模块或者其他模...

2013-09-14 09:35:53

阅读数:7186

评论数:4

【C++基础之六】运算符的重载

网上太多有关运算符的重载了,但是写的太过的详细,不适合新手入门,特别是那什么++和--的前增量后增量重载,一元二元运算符重载,特殊运算符,下标运算符,new和delete,甚至是指针运算符的重载,吓退了多少小伙伴啊。。我这里就写个最基础的,其实原理和写法都差不多,举一反三,多动手才能写好代码。 ...

2013-09-13 15:13:16

阅读数:16584

评论数:5

【C++基础之五】函数调用机制与调用约定

1.示例 栈的作用和功能这里就不再叙述了。 先看一个最简单的函数调用例子: #include "stdafx.h" int call(int _a,int _b); void _tmain() { int a=1; int b=2; int c=call(a,b); ...

2013-09-11 14:59:54

阅读数:4479

评论数:0

【C++基础之四】深拷贝和浅拷贝

1.普通类型对象的拷贝 普通类型对象的拷贝很简单,就是值的复制而已。比如: int _tmain(int argc, _TCHAR* argv[]) { int a=1; int b=a; return 0; } 2.类对象的拷贝 类对象的拷贝相比于普通类型的拷贝就复杂多了,它存在着各种...

2013-09-11 09:47:52

阅读数:4620

评论数:6

【C++基础之三】函数中局部变量的返回

一般说来,函数中是可以进行局部变量的返回的,不然岂不是全部要用全局变量,如果使用了全局变量,那还有必要进行返回吗?那函数就没有它存在的意义了!但是要注意了,这里所谓的局部变量的返回很有内涵,什么样的值才可以进行返回而不出错?       其实,只要遵守一句话即可:函数不能返回指向栈内存的指针!...

2013-09-10 14:45:11

阅读数:10298

评论数:4

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