随笔分类 -  C/C++

[C++]前置声明和头文件
摘要:看完《Effective C++》条款31有感。。假设有一个Date类Date.h[cpp] view plaincopyclassDate{private:intyear,month,day;};如果有个Task类的定义要用到Date类,有两种写法其一Task1.h[cpp] view plaincopyclassDate;classTask1{public:DategetData();};其二Task2.h[cpp] view plaincopy#include"Date.h"classTask2{public:DategetData();};一个采用前置声明,一个采用 阅读全文

posted @ 2013-01-19 15:13 androidme 阅读(228) 评论(0) 推荐(0)

谈谈C++继承中的重载,覆盖和隐藏
摘要:写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能 翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错! 我们先来看一些代码及其编译结果。 实例一: #include "stdafx.h" #include <iostream.h> class CB { public: void f(int) { cout << "CB::f(int)" << 阅读全文

posted @ 2013-01-19 13:07 androidme 阅读(166) 评论(0) 推荐(0)

C++中dynamic_cast,static_cast,const_cast,reinterpret_cast
摘要:dynamic_casthttp://baike.baidu.com/view/1745213.htmstatic_casthttp://baike.baidu.com/view/1745207.htmconst_casthttp://baike.baidu.com/view/1745221.htmreinterpret_casthttp://baike.baidu.com/view/1263731.htm 阅读全文

posted @ 2013-01-18 16:17 androidme 阅读(161) 评论(0) 推荐(0)

STL map与Boost unordered_map
摘要:今天看到boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树 中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator< 定义的大小排序。而boost::unordered_map是计算元素的Hash值,根据Hash值判断元素是否相同。所以,对unordered_map进行遍历,结果是无序的。用法的区别就是,stl::map 的key需要定义operator< 。 而boost::unordered_ma 阅读全文

posted @ 2013-01-16 21:21 androidme 阅读(217) 评论(0) 推荐(0)

static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
摘要:http://www.cnblogs.com/jerry19880126/archive/2012/08/14/2638192.html隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换 (如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,编译器允许直接转换。但若反过来double a=2000;short b;b=a;此时,是从8 阅读全文

posted @ 2013-01-16 21:19 androidme 阅读(2013) 评论(0) 推荐(0)

const修饰指针和引用的用法
摘要:const修饰指针和引用的用法,对于初学C++的人直是讳莫如深,不知所云. 一旦你了解了其用法,一切便不值一哂了.下面我为读者一一释疑: 大致说来其可分为三种情况: const修饰指针,const修饰引用,const修饰指针的引用.1.const修饰指针const修饰指针又可分为三种情况:a.const修饰指针本身b.const修饰指针所指的变量(或对象)c.const修饰指针本身和指针所指的变量(或对象)(1).const修饰指针本身这种情形下,指针本身为常量,不可改变,任何修改指针本身的行为都是非法的.例如:const int a = 1;const int b = 2;int i = 3 阅读全文

posted @ 2013-01-16 21:18 androidme 阅读(877) 评论(0) 推荐(0)

C++ using关键字作用总结
摘要:1.在当前文件中引入命名空间这是我们最熟悉的用法,例如:using namespace std;2.在子类中使用 using 声明引入基类成员名称(参见C++ primer)在private或者protected继承时,基类成员的访问级别在派生类中更受限:class Base {public:std::size_t size() const {return n; }protected:std::size_t n;};class Derived : private Base { . . . };在这一继承层次中,成员函数 size 在 Base 中为 public,但在 Derived中为 pr 阅读全文

posted @ 2013-01-15 21:16 androidme 阅读(478) 评论(0) 推荐(0)

C++继承:公有,私有,保护
摘要:公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3. 保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。下面列出三种不同的继 阅读全文

posted @ 2013-01-15 21:15 androidme 阅读(183) 评论(0) 推荐(0)

STL中的Concept和Boost库的Concept_Check
摘要:在Generic Programming当中,一个重要的概念就是Concept(滑稽的是,如果把这个Concept也翻译成“概念”,那就狗屁不通了。我倾向于说它是 “操作集”)。Concept就是一组操作,如果一个type具有这些操作,那么就说这个type是这个Concept的一个model。这其中的思想有那么一丁点像是OO当中的interface,一个class如果实现了一个interface,那么它就可以被当作这个interface来用。同样,如果一个type是一个Concept的model,那么所有接受这个Concept的操作也就可以接受这个type。例如,在STL中,stable_so 阅读全文

posted @ 2013-01-15 21:14 androidme 阅读(822) 评论(0) 推荐(0)

explicit构造函数
摘要:按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p );// 用C风格的字符串p作为初始化值//…}String s1 = “hello”;//OK 隐式转换,等价于String s1 = String(“hello”);但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n );//本意是预先分配n个字节给字符串String ( const char* p );// 用C风格的字符串p作为初始化值//…}下面 阅读全文

posted @ 2013-01-15 09:45 androidme 阅读(171) 评论(0) 推荐(0)

typedef和typename关键字
摘要:1、类型说明typedef类型说明的格式为:typedef 类型 定义名; 类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定义整型变量。例如: SIGNED_INT i, j;(与int i, j等效)。但 long SIGNED_INT i, j; 是非法的。typedef同样可用来说明结构、联合以及枚举和类。说明一个结构的格式为: typedef struct { 数.. 阅读全文

posted @ 2013-01-14 14:13 androidme 阅读(274) 评论(0) 推荐(0)

Libxml2
摘要:http://xmlsoft.org/http://www.zlatkovic.com/libxml.en.html 阅读全文

posted @ 2013-01-05 21:11 androidme 阅读(155) 评论(0) 推荐(0)

printf使用%s直接输出string类型,Program received signal SIGILL, Illegal instruction .
摘要:http://blog.csdn.net/siling4/article/details/6691343printf使用%s直接输出string类型,编译有警告,运行会报Program received signal SIGILL, Illegal instruction。而且,运行时报错行,会是printf的上一行,致使查找起来可能非常耗时:上一行怎么看怎么没有错误。附相关材料:用printf输出string类型数据总结#include <stdio.h>#include <string.h>using namespace std;int main(){ string 阅读全文

posted @ 2012-12-20 15:25 androidme 阅读(1185) 评论(0) 推荐(0)

boost>shared_ptr
摘要:由于前辈们在开发事广泛使用了boost的shared_ptr因此我打算自己了解一些这个shared_ptr。shared_ptr应该就是一种智能指针,这一概念在C++primer当中有提到过。或者称“引用计数指针”boost shared_ptr的教程内容网上有不少,其中比较详细的要算《boost库导论》了。shared_ptr头文件: "boost/shared_ptr.hpp"shared_ptr 可以从一个裸指针、另一个shared_ptr、一个std::auto_ptr、或者一个boost::weak_ptr构造。还可以传递第二个参数给shared_ptr的构造函数 阅读全文

posted @ 2012-12-20 15:17 androidme 阅读(439) 评论(0) 推荐(0)

cppreference.com
摘要:http://zh.cppreference.com/w/ 阅读全文

posted @ 2012-12-20 15:13 androidme 阅读(168) 评论(0) 推荐(0)

ICU - International Components for Unicode
摘要:http://site.icu-project.org/ 阅读全文

posted @ 2012-11-24 14:55 androidme 阅读(123) 评论(0) 推荐(0)

GYP (Generate Your Projects)
摘要:http://code.google.com/p/gyp/ 阅读全文

posted @ 2012-11-22 11:06 androidme 阅读(224) 评论(0) 推荐(0)

SQLite
摘要:http://www.sqlite.org/ 阅读全文

posted @ 2012-11-21 21:34 androidme 阅读(197) 评论(0) 推荐(0)

zeromq
摘要:http://www.zeromq.org/ 阅读全文

posted @ 2012-11-21 20:22 androidme 阅读(165) 评论(0) 推荐(0)

tinyxml
摘要:http://www.grinninglizard.com/tinyxml/ 阅读全文

posted @ 2012-11-21 20:19 androidme 阅读(124) 评论(0) 推荐(0)

导航