C/C++
文章平均质量分 74
puppet_master
coding can not change the world, but I will create my own world!
展开
-
C++那些细节--inline关键字
inline是个好东西,不过要注意不能乱用。在项目中看到过许多inline相关的宏定义,_forceinline,_inline等等,有许多有疑惑的地方。于是,本人强迫症发作,决定总结一下inline相关的知识。主要涉及到inline的功能,使用,以及forceinline等。还有类中的virtual函数是否会被inline等问题。原创 2015-09-20 19:23:06 · 4657 阅读 · 0 评论 -
C++那些细节--typedef关键字
关于typedef关键字,以前刚刚学C语言的时候,用它来重定义结构体别名。之后的话就是在用函数指针的时候用过一些,然而并不知道这个还有什么用处。今天花点时间总结一下typedef的细节。一.简介在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异。简单来说,就是用来给一个复杂变量定义// C++Test.cpp : 定义控制台应用程序的入口点。//#include "s原创 2015-09-16 00:26:27 · 3322 阅读 · 2 评论 -
《C++标准程序库》读书笔记(一)
第五章.STL概述:1.STL的基本思想就是将数据和操作分离。数据由容器类别加以管理,操作则由可定制的算法定义,迭代器在其中充当粘合剂,使任何算法都可以和任何容器交互运作。2.STL的一个根本的特性是所有组件都可以针对任意型别运作。3.标准的容器只有几种,分为序列式容器和关联式容器: 序列式容器:vector,deques,list 关联式容器:原创 2015-10-18 12:24:36 · 803 阅读 · 0 评论 -
#ifndef... #define与#pragma once总结
前几天看到同一个项目中有的地方使用了#ifndef...#define ...#endif,而有的地方却用了#pragma once,于是我就纠结了,这两者有神马区别呢?今天仔细查了一下,发现还是有一点点的区别,不过不大,简单记录一下。一.简介#ifndef ...#define ...#endif和#pragma once都是为了解决同一个问题的,就是防止头文件被重复包含和编译。原创 2015-08-21 23:13:25 · 1467 阅读 · 1 评论 -
C++那些细节--extern关键字&&全局变量定义问题
最近在学Lua,关于Lua编译的地方,由于Lua是用C语言写的,在C++中使用C语言的函数,需要使用extern "C“编译才能过,之前貌似没有接触过这方面的知识,写个blog纪念一下,顺便整理一下extern关键字的作用。一.extern "C"的作用这是我第一次见,因为之前一直没有过C++去调用C的函数。关于C++和C语言混合编程其实还有一些地方要注意的。比如,如果编译时出原创 2015-08-16 18:06:00 · 7125 阅读 · 0 评论 -
C++那些细节--static关键字
static也是我们经常用到的关键字,关于static有很多用法,而且在面向过程和面向对象编程中,static有着不同的意义。之前总是记不住,于是,本人强迫症又发作了,一定要搞懂它!!!一.面向过程编程中的static关键字1.静态全局变量静态全局变量原创 2015-08-09 17:32:51 · 1498 阅读 · 0 评论 -
C++那些细节--中operator=相关问题
C++中关于operator=的相关知识整理,涉及深拷贝浅拷贝,以及一些拷贝构造函数的知识原创 2015-07-23 14:09:54 · 9879 阅读 · 0 评论 -
C++那些细节--顶层const和底层const
顶层const和底层const原创 2015-04-16 13:56:12 · 1736 阅读 · 0 评论 -
C++那些细节--const与函数
const是C++中灰常灰常强大的关键字。const--constant的缩写,简单理解就是不变的意思,它的所有功能都是限定我们修改某个变量。虽然我们最熟悉的是const常量,但是这并不是const最有用的部分。const和函数碰撞在一起的时候,才能激发出const真正能力。 下面看一下const修饰函数本身,修饰函数参数,修饰函数返回值时,都能带来哪些效果。原创 2015-09-30 15:26:19 · 3277 阅读 · 5 评论 -
dll和lib的相关问题总结
之前一直在纠结关于dll和lib的问题,花点时间总结一下,以后肯定会有用的。一.简介在编程的时候,最简单的是将源码给我们,在编程的时候,包含头文件和实现文件,但是这样做比较麻烦,而且源码也暴露了。所以,一种更加人性化的方式就是将代码编译成库函数,供我们调用。库函数分为两种,一种是lib库,一种是dll库。lib库,包含原创 2015-09-07 12:50:09 · 1026 阅读 · 0 评论 -
彻底搞懂C++多态虚函数等问题
C++虚函数以及多态问题原创 2015-03-28 13:31:00 · 870 阅读 · 0 评论 -
成员函数指针与高效C++委托 (delegate)
原文地址:http://www.cnblogs.com/cappuccino/p/3262056.html下载实例源代码 - 18.5 Kb下载开发包库文件 - 18.6 Kb概要很遗憾, C++ 标准中没能提供面向对象的函数指针. 面向对象的函数指针也被称为闭包(closures) 或委托(delegates), 在类似的语言中已经体现出了它的价值. 在 Delphi(Obj转载 2015-10-20 21:09:17 · 1511 阅读 · 0 评论 -
C++那些细节--static_cast,dynamic_cast,const_casst,reinterpret_cast
恩,这四个cast,之前一直没怎么搞懂,在使用类型转化时仍然经常使用C风格的转化,而且之前的一次笔试题竟然考的就是这道题,好吧,我强迫症又犯了,一定要彻底搞懂...原创 2015-07-25 15:11:46 · 1109 阅读 · 0 评论 -
C++11 标准新特性: 右值引用与转移语义
原文地址:http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/C++ 的新标准 C++11 已经发布一段时间了。本文介绍了新标准中的一个特性,右值引用和转移语义。这个特性能够使代码更加简洁高效。新特性的目的右值引用 (Rvalue Referene) 是转载 2016-04-14 18:04:24 · 793 阅读 · 0 评论 -
C++那些细节--拷贝构造函数
关于C++拷贝构造函数原创 2015-07-19 16:48:39 · 2619 阅读 · 2 评论 -
《Effective C++》读书笔记(三)
一.实现26.尽可能延后变量定义式出现的时间:a) 只有真的要用这个变量了,才进行定义。防止不必要的定义造成浪费。 b) 如果可以通过copy构造函数构造就能省去对象默认构造并赋值的浪费。c) 关于循环内使用一个对象,定义在循环外还是循环内的问题,这个本人纠结了好久。现在终于有相对明确的答案了:定义在循环外需要:1个构造函数,1个析构函数,原创 2015-09-18 14:37:17 · 623 阅读 · 0 评论 -
C++那些细节--32位64位数据类型的区别
一.简介关于基本数据类型的大小,以前在编程的时候貌似没有太注意过,不过,这东西应该是最基本的知识点,而且在这个32位向64位过渡的时期,我们还是有必要了解一下32位下和64位下基本数据类型有什么不同。PS:例子均是基于Windows平台,编译器为VS2012,2013。本人Linux白痴...对于Linux下的具体情况并不是太清楚,欢迎批评指正。二.32原创 2015-11-26 00:11:38 · 9907 阅读 · 0 评论 -
指针的大小到底是由谁决定?是多少?
应该说这是一个非常基础的问题,教科书上说指针大小和机器字长相同,即32位机指针长度为4字节!但是对不对呢?为什么是这样? 搜了一下相关资料。。。居然发现回答不统一,很多人也同样是糊里糊涂。下面对这个问题做一个系统的整理和分析: 首先,介绍几个基本概念:(主要摘自百度百科) 字长:在同一时间中处理二进制数的位数叫字长。通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就转载 2015-11-21 13:14:58 · 7977 阅读 · 0 评论 -
RTTI、虚函数和虚基类的开销分析及使用指导
原文链接:http://blog.csdn.net/badboyfind/article/details/1797030“在正确的场合使用恰当的特性” 对称职的C++程序员来说是一个基本标准。想要做到这点,首先要了解语言中每个特性的实现方式及其开销。本文主要讨论相对于传统C而言,对效率有影响的几个C++新特性。C++引入的额外开销体现在以下两方面:编译时开销转载 2015-11-18 21:23:09 · 820 阅读 · 0 评论 -
《Effictive C++》读书笔记(一)
一.让自己习惯C++1. 视C++为一个语言集合,C语言基础,面向对象部分,Template,STL。C++感觉好博大精深,现在貌似还是第二个阶段,想起刚学C++那会儿,一直用着C++的语法,写着面向过程的代码,实在是囧啊…2. 尽量以const ,enum,inline替换#define:a) 当我们定义一个常量时,最好使用const常量,而非#de原创 2015-08-12 13:58:15 · 2084 阅读 · 0 评论 -
《Effective C++》读书笔记(二)
一.资源管理资源管理就是我们申请的资源,不管是内存,互斥锁,文件等等,使用过后,都需要归还给系统。C++没有自带的垃圾回收机制,所以自己把握好资源管理是很重要的! 13.以对象管理资源:a) 将一个对象所需要的所有资源放到对象内部,在对象初始化的时候分配资源,并且在对象被销毁的时候将资源释放。b) 我们通常new一个对象,然后通过指针指向对象,在用过后del原创 2015-08-29 21:08:09 · 833 阅读 · 0 评论 -
C++那些细节--函数的默认参数
C++函数默认参数的相关问题整理原创 2015-08-20 21:00:03 · 2182 阅读 · 2 评论 -
C++那些细节--函数指针
关于函数指针的一些问题原创 2015-10-31 18:04:20 · 3439 阅读 · 3 评论 -
《Effective C++》读书笔记(四)
七.模板与泛型编程模板以前只是学习的时候写过一些例子,并没有真正用过。本人对模板还处于超级小白的状态,基本看不懂这章,所以就先浏览一遍吧,等今后有经验之后,再回头看一下模板相关的内容。目前打算下一步学一下STL。41.了解隐式接口和编译期多态:a) classes和templates都支持接口和多态。b) 对于classses中的接口是显式的,以函数签名为中心。原创 2015-09-26 20:34:45 · 570 阅读 · 0 评论 -
__declspec(dllimport)的作用
是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。转载 2015-09-10 11:54:27 · 664 阅读 · 0 评论 -
《C++Primer读书笔记》(8)
1.调用拷贝构造函数的时机: (1)使用 = 时会发生。 (2)将一个对象作为实参传递给一个非引用类型的形参。 (3)从一个返回类型为非引用类型的函数返回一个对象。2. 析构函数的调用时机: (1)变量离开作用域时被销毁,调用析构函数。 (2)一个对象被销毁时,其成员被销毁。 (3)容器被销毁时,其元素被销毁。 (4)new出来的对象,被原创 2015-05-12 20:06:42 · 497 阅读 · 0 评论 -
《C++Prinmer》读书笔记(7)
泛型算法&lambda表达式原创 2015-04-22 22:20:45 · 567 阅读 · 0 评论 -
《C++Primer》读书笔记(4)
1.条件运算符的使用,平时很少使用这个...以至于经常理不清逻辑,还是记录一下,加深一下印象。int _tmain(int argc, _TCHAR* argv[]){ int a = 1; int b = 2; int c = 0; c = a > b ? a : b; cout<<c<<endl; getchar();}c = a > b ? a:b 先判断a > b,原创 2015-04-13 20:34:32 · 539 阅读 · 0 评论 -
《C++Primer》读书笔记(5)
1.switch语句,有时我们可以故意不使用break语句,达到想要的效果。但是遇到这种情况最好要写一段注释,说明一下。正常情况下还是要写break语句的,漏写会引发很严重的后果。2.局部静态变量,在函数内部定义一个static变量,函数终止之后,这个局部的静态变量仍然有效。静态变量如果不初始化,会默认初始化为0。3.在循环中,如果其中有return时,原创 2015-04-14 13:33:30 · 561 阅读 · 0 评论 -
《C++Primer》读书笔记(3)
1.C++11的新标准提供了一种新的遍历方式:即for(element : vector){//option }等价于原来的for (int i = 0; i {//option}恩,感觉省事了不少!// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include原创 2015-04-09 12:43:12 · 573 阅读 · 0 评论 -
指针数组和数组指针
原文链接:http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针转载 2015-04-14 21:14:00 · 427 阅读 · 0 评论 -
《C++primer》读书笔记(1)
记录一下C++学习之路上的一些以前没注意过的问题。原创 2015-03-30 13:35:09 · 601 阅读 · 0 评论 -
《C++Primer》读书笔记(2)
1.const关键字当我们定义一种变量,不希望改变其值的时候,使用const关键字来修饰。即常量。使用的时候一定要注意,定义一个常量的时候一定要初始化,且只能在初始化的时候赋值,之后不能进行修改。2.const引用这个地方经常纠结,这次一定要搞懂。常量引用不是引用是个常量,而是引用的对象是个常量。检测常量引用。实际上是对const的引用。事实上,C++的引用本身就是一个常量,因原创 2015-04-07 18:27:16 · 651 阅读 · 0 评论 -
《C++Primer》读书笔记(6)
1.类的默认构造函数只是在类没有定义构造函数的时候才自动加上去的,而如果定义了一个构造函数,则不会添加默认构造函数了。此时如果还想要默认构造函数,需要自己写一个默认构造函数。2.友元函数和友元类// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std原创 2015-04-18 13:15:12 · 551 阅读 · 0 评论 -
C++虚析构函数
原文链接:http://blog.csdn.net/starlee/article/details/619827我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~转载 2015-03-28 13:20:56 · 607 阅读 · 0 评论 -
《C++Primer》读书笔记(9)
1.运算符重载,当有的时候对象运算与正常运算符的操作意义相同时,为了代码的简洁,我们就可以使用运算符重载。比如一个简单的加法操作,没有必要再写一个add方法,还是一个+看着比较顺眼。// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace s原创 2015-05-14 20:00:25 · 526 阅读 · 0 评论 -
《C++Primer》读书笔记(10)
1.关于继承:派生类虽然可以访问基类的公有和保护成员,但是不建议在构造函数里直接初始化这些值,而是调用基类的构造函数来初始化。2. C++11新标准,在类的后面加一个final关键字,即可防止类被继承。在函数后面加一个final关键字,可以防止函数被覆写。3.C++11新标准,在派生类中,如果是想覆写一个基类的函数,最好在函数后面写一个override关键字,这样如果出现错误,编译器会报错原创 2015-05-17 21:09:51 · 524 阅读 · 0 评论 -
Error LNK2001 无法解析的外部符号 的几种情况及解决办法
原文: http://wenku.baidu.com/view/8f0e877931b765ce0508141a.html VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不转载 2015-08-19 14:04:31 · 15756 阅读 · 0 评论 -
C++中你仍然不知道的事
原文地址:http://blog.csdn.net/qq45000/article/details/8136138 C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能。什么东西又可以放在cpp文件中。如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!!转载 2015-08-06 20:29:07 · 550 阅读 · 0 评论 -
C语言变量问题汇总
看到一篇文章,把C编程中的各种变量的问题汇总了起来,感觉很棒,虽然都是C语言的,不过C++大致也差不多。原文地址:http://blog.csdn.net/yongzi123/article/details/43217561、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部转载 2015-08-16 16:57:56 · 725 阅读 · 0 评论