c++
文章平均质量分 72
gavinr
这个作者很懒,什么都没留下…
展开
-
C++11中值得关注的几大变化
赖勇浩(http://laiyonghao.com)声明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的《The Biggest Changes in C++11(and Why You Should Care)》一文,几乎所有内容都搬了过来,但不是全文照译,有困惑之处,请参详原文(http://www.softwarequalityconnection.com/2转载 2012-04-06 23:02:52 · 865 阅读 · 0 评论 -
c++笔记 显式类型转换static_cast、dynamic_cast、const_cast、reinterpret_cast
旧式强制类型转换,用圆括号将类型括起来实现:int *ip;char *pc = (char*) ip;效果与使用reinterpret_cast符号相同,但这种强制类型转换的可视性比较差,难以跟踪错误的转换。标准c++为了加强类型转换的可视,引入命名的强制转换操作符。1.dynamic_castdynamic_cast支持运行时识别指针或引用的指向的对象。可以将基原创 2012-04-05 18:13:54 · 1091 阅读 · 0 评论 -
c++笔记 构造/析构/赋值运算
1.copy构造函数与copy assignment操作符copy 构造函数被用来“以同型对象初始化自我对象”,copy assignment操作符被用来“从另一个同型对象中拷贝其值到自我对象”。class Widget { Widget(); //default构造函数 Widget(const Widget& rhs); //copy构造函数 Widget&原创 2012-04-10 00:22:39 · 782 阅读 · 0 评论 -
c++笔记 降低头文件间的编译依存关系
1.编译依存关系 某些时候只修改了某个类的private,结果却有一大堆文件需要编译。问题出在c++并没有把“将接口从实现中分离”这事做好。Class的定义式不只详细叙述了class接口,还包括十足的实现细目。例如:class Perpson {public: std::string name() const; std::string birthData() con原创 2012-04-12 22:04:13 · 1611 阅读 · 1 评论 -
c++笔记 const关键字的使用
1.关于const指针 如果关键字const出现在星号左边,表示被指物为常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两都都是常量。 注意被指物是常量时,以下两种写法意义相同: const int *p; int const *p;2.const成员函数 const成员函数不能修改类的数据成员,也就是原创 2012-04-08 22:33:13 · 891 阅读 · 0 评论 -
DLL导出类的问题
DLL动态链接库是程序复用的重要方式,DLL可以导出函数,使函数被多个程序复用,DLL中的函数实现可以被修改而无需重新编译和连接使用该DLL的应用程序。作为一名面向对象的程序员,希望DLL可以导出类,以便在类的层次上实现复用。所幸的是,DLL确实也可以导出类。然而事实却没这么简单,导出类的DLL在维护和修改时有很多地方必需很小心,增加成员变量、修改导出类的基类等操作都可能导致意想不到的后果转载 2012-05-07 11:14:05 · 1308 阅读 · 0 评论 -
c++笔记 虚函数表内存布局
测试了一下vs2008中虚函数表的内存布局,测试代码如下:class A {public: virtual int getA() const { return a;}private: int a;};class B{public: virtual int getB(){return b;} private: int b;};cla原创 2012-05-06 14:30:21 · 1779 阅读 · 0 评论 -
c++笔记 关于标准库中容器内的元素
1.容器元素的条件 STL容器元素必须满足以下三个基本要求:1)必须可透过copy构造函数进行复制。 副本与原本必须相等,亦即所有相等测试的结果,原本与副本行为一致。所有容器都会在内部生成一个元素副本,并返回该暂时性副本,因此copy构造函数会被频繁地调用。所以copy构造函数应该尽可能的优化。2)必须可以透过assignment操作符完成赋值动作。原创 2012-04-18 23:53:31 · 968 阅读 · 0 评论 -
c++笔记 用组合代替继承
设计原则:多用组合,少用继承。考虑下面的情况:class Timer { virtual void onTick(); //定时器每滴答一次,此函数被调用一次。 }class Widget: public Timer {public: virtual void onTick();} 子类Widget需要重新实现onTick函数,怎么才能用组合实现呢?可以用下面的方法解决原创 2012-04-13 21:52:20 · 2421 阅读 · 0 评论 -
c++笔记 遮掩继承
看一个例子:class Base {public: virtual void mf1() = 0; virtual void mf1(int){} virtual void mf2(){} void mf3(){} void mf3(double){}};class Derived: public Base {public: virtual void mf1(){}原创 2012-04-12 20:06:48 · 979 阅读 · 0 评论 -
使用Boost.Asio编写通信程序
使用Boost.Asio编写通信程序转自http://cpp.ezbty.org/content/science_doc/%E4%BD%BF%E7%94%A8boostasio%E7%BC%96%E5%86%99%E9%80%9A%E4%BF%A1%E7%A8%8B%E5%BA%8F摘要:本文通过形像而活泼的语言简单地介绍了Boost::asio库的使用,作转载 2012-04-06 17:26:22 · 2883 阅读 · 0 评论 -
boost 1.49编译及使用
1.下载下载最新的boost版本,连接不上sf所以找了另外一个地址,http://miranda-dev.googlecode.com/files/boost_1_49_0.7zboostpro提供编译好的二进制版本,http://www.boostpro.com/download/,不过版本较旧2.关于编译大部分的boost库是无需编译的,仅仅只需要包含头文件即可需要原创 2012-04-06 14:43:38 · 4529 阅读 · 0 评论 -
boost.bind用法
转自http://cunsh.ycool.com/post.1946109.html第9章 bind - boost头文件: boost/bind.hppbind 是一组重载的函数模板.用来向一个函数(或函数对象)绑定某些参数. bind的返回值是一个函数对象.它的源文件太长了. 看不下去. 这里只记下它的用法:9.1 对于普通函数假如有函数转载 2012-04-07 11:06:04 · 810 阅读 · 0 评论 -
快速排序
按照算法导论,写了一下快速排序void swap(int &a, int &b){ int temp = a; a = b; b = temp;}int partition(int array[], int low, int high){ int key = array[high];//选取参考点 int i = low -1; for(int j = low; j原创 2012-07-19 00:16:12 · 779 阅读 · 0 评论