extern "C"
摘要:经常看到如下代码: #ifdef _cplusplus extern "C" { #endif #include "XXX.h" #ifdef _cplusplus } #endif 解释: extern "C"的作用是,告诉C++编译器,下面的代码按照C的方式进行编译,说白了,不要对这些函数进行名
阅读全文
posted @
2016-10-24 22:47
小菜鸡y
阅读(317)
推荐(0)
c++初始化列表
摘要:何谓初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。 struct
阅读全文
posted @
2016-10-24 22:34
小菜鸡y
阅读(204)
推荐(0)
c++回调函数
摘要:回调通常发生在两个角色(调用者和实现者),当我们希望发生某个事件时,调用者调用实现者定义的某个函数。如一个Framework提供商,规定了整个程序的框架,当某些事件发生时需要调用某个行为,而这些行为的具体定义是由客户自己来完成的,客户可能根据不同事件选择不同的行为(实现函数运行时的动态调用),因此调
阅读全文
posted @
2016-10-09 16:17
小菜鸡y
阅读(460)
推荐(0)
二叉树遍历(递归与非递归)
摘要:以下面二叉树为例: 输入:0表示当前分支结束 结果
阅读全文
posted @
2016-10-08 14:11
小菜鸡y
阅读(263)
推荐(0)
c++类型转换函数
摘要:一.opertor:本类类型 >其他类型(内置类型或其他类类型) c++中opertor可以将类类型转换为内置类型或其他类型,但反之不行 operator 类型名( ) { 实现转换的语句:return 目标类型对象 } 二.转换构造函数:其他类型 >本类类型 通过转换构造函数可以将其他类型数据转换
阅读全文
posted @
2016-09-17 19:53
小菜鸡y
阅读(542)
推荐(1)
虚基类初始化问题
摘要:在包含有继承关系的类里,生成一个派生类对象,要调用构造函数进行初始化此对象,而构造函数的调用顺序是先调用最顶层基类的构造函数,次顶层....等;但在普通继承和虚继承里存在区别 普通继承:父类只能由其直接派生类初始化 虚继承: 基类只能由最底层的派生类初始化,而不是由直接基类初始化,因为虚继承是为了避
阅读全文
posted @
2016-09-13 21:11
小菜鸡y
阅读(1025)
推荐(0)
空类
摘要:1.empty class:意味着对象不使用任何空间,因为没有任何隶属对象的数据需要存储.(即类不包含任何non-static成员变量,没有virtual函数,没有virtual base),但c++规定独立(非附属)对象必须有非零大小。 2.static 变量存储在全局/静态存储区,被所有对象共享
阅读全文
posted @
2016-09-13 17:54
小菜鸡y
阅读(269)
推荐(0)
将inline、template声明和定义在头文件中
摘要:如果要在要在源文件(a.cpp)中内联的展开一个函数(fun),则该源文件(a.cpp)中必须包含此函数(fun)的定义。如果要在多个文件中内联的展开fun,则在所有的源文件中都必须包含fun的定义。只有将inline函数定义在头文件中,然后在需要内联展开此函数的文件中#include头文件才能实现
阅读全文
posted @
2016-09-12 22:08
小菜鸡y
阅读(980)
推荐(0)
模板的特化
摘要:模板分为类模板和函数模板,特化分为全特化和偏特化(特化是对模板的特化,因此必须存在模板才可以进行特化) 全特化:给模板中的所有模板参数指定一个具体的类 偏特化:部分指定模板参数的类 类模板可以全特化也可以偏特化 函数模板只能全特化(因为重载可以达到偏特化的效果) 类: 函数:
阅读全文
posted @
2016-09-11 21:08
小菜鸡y
阅读(253)
推荐(0)
c++ 中static关键字
摘要:static可以用于修饰普通的变量和函数,也可以用于修饰类的成员 普通应用 1.修饰普通变量 修饰全局变量:将变量的作用域限制在所属文件 修饰局部变量:将变量的生存周期延迟到程序结束 2.修饰普通函数 将函数的作用域限制在所属文件 在类中应用 被static修饰的类的成员被类的所有对象共享,不属于某
阅读全文
posted @
2016-09-11 14:11
小菜鸡y
阅读(228)
推荐(0)
为什么拷贝构造函数的参数是一个引用,可以不是引用吗
摘要:拷贝构造函数的参数必须是引用,参数传递的方式有两种,值传递和地址传递 其中值传递即是拷贝原对象的一个副本作为实参,即参数传递的过程中也调用了拷贝构造函数,若拷贝构造函数的参数不是引用的话,会造成无穷递归的调用拷贝构造函数。 而引用是直接操作原对象,因此不会出现上述问题。
阅读全文
posted @
2016-09-07 13:09
小菜鸡y
阅读(878)
推荐(0)
计数排序
摘要:数组A[N] 算法思想: 1.找出序列中最大的数Max,则序列的范围为0-k; 2.计算每个数出现的次数,用临时数组temp[Max+5]保存(遍历数组,temp[a[i]]++),注:要确保temp的长度>A的长度 3.计算<=i的元素的个数,0-Max都计算一遍 4.根据上一步可以确定<=a[i
阅读全文
posted @
2016-09-06 19:47
小菜鸡y
阅读(176)
推荐(0)
c++各种排序
摘要:1.插入排序 1 void InsertSort(int a[], int n) 2 { 3 int temp, i, j; 4 for (i = 1; i < n; i++) 5 { 6 if (a[i] < a[i - 1]) 7 { 8 temp = a[i]; 9 for (j = i -
阅读全文
posted @
2016-09-06 15:52
小菜鸡y
阅读(312)
推荐(0)
final ,override关键字
摘要:final 有时我们会定义这样一种类,我们不希望其他类继承它,或者不想考虑它是否适合作为一个基类。为了实现这一目的,c++ 11新标准提供了一种防止继承发生的方法,即在类名后跟一个关键字final: 此外,final还可以修饰类中的虚函数,表示类成员函数不可以在派生类中进行覆盖 override 对
阅读全文
posted @
2016-06-17 17:05
小菜鸡y
阅读(166)
推荐(0)
类的const成员
摘要:类的const成员包括const数据成员和const成员函数; 1.const数据成员: 和普通的const变量一样,定义时初始化,且不能修改 2.const成员函数: const成员函数只能访问其他的const成员函数,而不能访问非const成员函数 const可以修饰static数据成员,在定义
阅读全文
posted @
2016-06-03 21:11
小菜鸡y
阅读(769)
推荐(0)
mutable和volatile关键字
摘要:1.mutable 在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。mutable在类中只能够修饰非静态数据成员。 我们知道,如果类的成
阅读全文
posted @
2016-06-03 16:28
小菜鸡y
阅读(425)
推荐(0)
函数指针
摘要:1.函数指针的使用 2.函数指针定义的几种形式 定义指向int fun(int a,int b)的函数指针 1)直接定义: int (*p)(int,int); p=fun; //或p=&fun 2)使用typedef定义类型别名: //p1,p2是函数指针类型 typedef int (*p1)(
阅读全文
posted @
2016-06-02 23:43
小菜鸡y
阅读(381)
推荐(0)
返回数组指针的函数
摘要:首先,数组不能被拷贝,所以函数不能返回数组,但可以返回数组的指针或引用,返回数组的指针有一下几种方式: 1.使用类型别名 2.直接定义 3.使用auto 4.使用decltype
阅读全文
posted @
2016-06-02 20:17
小菜鸡y
阅读(3418)
推荐(0)
auto和decltype
摘要:auto 1.编译器通过分析表达式的类型来确定变量的类型,所以auto定义的变量必须有初始值。 2.auto可以在一条语句中声明多个变量,但该语句中所有变量的初始值类型必须有一样。 3.auto会忽略掉顶层const,同时底层const则会保留下来 如果希望auto类型是一个顶层const ,需要明
阅读全文
posted @
2016-06-02 11:33
小菜鸡y
阅读(612)
推荐(0)
关于const
摘要:1.顶层const和底层const const修饰的对象本身是常量,则为顶层const,否则为底层const 如: const int a=10; //a是int常量,顶层const int *const b=nullptr; //b为指向int 类型的常量指针,顶层const const int
阅读全文
posted @
2016-05-31 20:52
小菜鸡y
阅读(250)
推荐(0)