自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

转载 typedef用法

http://www.cnblogs.com/lkkandsyf/archive/2015/04/27/4461389.html

2017-05-30 15:28:09 150

原创 不使用中间变量进行两个值得交换

#include <stdio.h>void swap1(int &a, int &b) {int temp = a;a = b;b = temp;}void swap2(int &a, int &b) {a = a + b;b = a - b;a = a - b;}void swap3(int &a, int &b) {a = a^b;b = a^b;a = a^b;}int

2017-05-30 12:27:02 243

原创 有符号变无符号

例:#include <stdio.h>int main(void){ int ix = -100; unsigned int iy = 99; printf("%d\n", ((ix+iy)>10) ? (1) : (2) ); return 0;}-100与99相加, -100首先被转换成一个很大的数, 然后与99相加, 结果为很大的数(差1刚好溢出),因此返回1

2017-05-30 12:14:08 230

原创 良好编程风格的一些小技巧

第一种: if (flag == TRUE) if (flag == FALSE) 第二种: if (flag) if (!flag)第二种较好,根据布尔类型的语义,零值为’假’(记为FALSE),任何非零值都是真(记为TRUE),TRUE的值究竟是什么并没有统一的标准,例如Visual C++将true定义为1,而Visual Basic则将true定义为-1,因此不可将布尔变量直接与T

2017-05-30 11:40:24 248

原创 i++与++i哪个效率更高

c/c++:自建数据类型的情况,效率没有区别;自定义数据类型的情况,++i效率较高;解释:自定义数据类型(主要指类),前缀式(++i)可以返回对象的引用,而后缀式(i++)必须返回对象的值,所以导致在大对象的时候产生较大的复制开销,降低效率。可参考自建类型的汇编代码:

2017-05-30 11:12:28 399

转载 C++中子类构造函数写法总结

构造方法是用来初始化类对象的。如果在类中没有显式地声明构造函数,那么编译器会自动创建一个默认的构造函数;并且这个默认的构造函数仅仅在没有显式地声明构造函数的情况下才会被创建.构造函数与父类的其它成员(成员变量和成员方法)不同,它不能被子类继承。因此,在创建子类对象时,为了初始化从父类中继承来的成员变量,编译器需要调用其父类的构造函数。如果子类的构造函数没有显示地调用父类的构造函数,则默认调用父类的无

2017-05-30 09:42:57 704

转载 C++流的基本概念

在C++语言中,数据的输入和输出(简写为I/O)包括对标准输入设备键盘和标准输出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间(当然可用该空间存储任何信息)进行输入输出这三个方面。对标准输入设备和标准输出设备的输入输出简称为标准I/O,对在外存磁盘上文件的输入输出简称为文件I/O,对内存中指定的字符串存储空间的输入输出简称为串I/O。C++语言系统为实现数据的输入和输出定义了一个庞大

2017-05-29 23:50:23 279

原创 c++运算符重载

c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;除以下五种运算符不允许重载外,其他运算符允许重载:.(成员运算符).*(成员指针访问运算符)::(域运算符)sizeof(尺寸运算符)?:(条件运算符)注意: 重载不能改变运算符运算对象(操作数)的个数; 重载不能改变运算符的优先级别; 重载不能改变运算符的结合性; 重载运算符的函数不能有默认的参数; 重载的

2017-05-23 21:51:54 270

原创 泛化、实现、依赖和关联的区别

C++ 关系

2017-05-21 21:46:51 633

转载 typedef和define的作用域

typedef: 如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾; 如果放在某个函数内,定义域就是从定义开始直到该函数结尾; #define: 不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。 如: typedef …//此处开始到文件结尾 #define …//此处开始到文件结尾 int negate(int num

2017-05-17 16:36:35 2377

转载 C++多态的实现原理

1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包括至少一个...

2017-05-14 18:28:35 246

原创 c++成员函数的重载、覆盖、隐藏区别

成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。c++其实并没有什么隐藏规则,只不过是运行的迟绑定技术而已

2017-05-14 17:18:16 390

转载 内存越界

* glibc detected * free(): invalid pointer: * glibc detected * malloc(): memory corruption: * glibc detected double free or corruption (out): 0x00000000005c18a0 ** * glibc detected double free or

2017-05-12 17:17:17 357

转载 va_list原理及用法

VA_LIST 是在C语言中解决变参问题的一组宏,变参问题是指参数的个数不定,可以是传入一个参数也可以是多个;可变参数中的每个参数的类型可以不同,也可以相同;可变参数的每个参数并没有实际的名称与之相对应,用起来是很灵活。 下面是va_list的用法示例 : #include <stdarg.h> int AveInt(int,...); void main() {

2017-05-12 16:24:31 735

转载 类的前向声明,class和include的区别

前向声明的定义:有些时候我们可以声明一些类但是并不去定义它,当然这个类的作用也很有限了。比如class foo;声明一个foo类,这个声明,有时候也叫做前向声明(forward declaration),在声明完这个foo类之后,定义完这个foo类之前的时期,foo类是一个不完全的类型(incomplete type),也就是说foo类是一个类型,但是这个类型的一些性质(比如包含哪些成员,具有哪些操

2017-05-10 17:01:44 536

转载 父类指针指向子类对象的理解

父类子类指针函数调用注意事项:1,如果以一个基础类指针指向一个衍生类对象(派生类对象),那么经由该指针只能访问基础类定义的函数2,如果以一个衍生类指针指向一个基础类对象,必须先做强制转型动作(explicit cast),这种做法很危险,也不符合生活习惯,在程序设计上也会给程序员带来困扰。(一般不会这么去定义)3,如果基础类和衍生类定义了相同名称的成员函数,那么通过对象指针调用成员函数时,到底调用那

2017-05-09 23:47:28 4924

转载 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区  栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。  堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程

2017-05-08 22:53:34 204

转载 __va_args__

使用标准的方法打印调试信息有时候不是很方便, 例如Qt编程, 在调试已有的代码时, 我想在打印调试信息的地方, 把代码位置也打印出来以方便定位错误, 或者需要在调试信息前面加一个前辍, 好方便在调试信息太多的时候可以用grep过滤一下, 仅显示本模块的调试信息, 这时就需要一个一个地修改已有的qDebug, 使其成为以下形式:   qDebug( “[模块名称] 调试信息 File:%s, L

2017-05-08 15:47:04 205

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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