代码改变世界

随笔分类 -  C++

C++ 语言特性的性能分析

2012-05-07 13:23 by Rollen Holt, 2528 阅读, 收藏, 编辑
摘要: 大多数开发人员通常都有这个观点,即汇编语言和 C 语言适合用来编写对性能要求非常高的程序。而 C++ 语言的主要应用范围是编写复杂度非常高的程序,但是对性能要求不是那么严格的程序。但是事实往往并非如此,很多时候,一个程序的速度在框架设计完成时大致已经确定了,而并非是因为采用了C++语言才使其速度没有达到预期的目标。因此当一个程序的性能需要提高时,首先需要做的是用性能检测工具对其运行的时间分布进行一个准确的测量,找出关键路径和真正的瓶颈所在,然后针对瓶颈进行分析和优化,而不是一味盲目地将性能低劣归咎于所采用的语言。事实上,如果框架设计不做修改,即使用C语言或者汇编语言重新改写,也并不能保... 阅读全文

为什么VC经常输出烫烫烫烫烫烫烫烫

2012-05-07 11:52 by Rollen Holt, 23495 阅读, 收藏, 编辑
摘要: 在Debug模式下,VC会把未初始化的栈内存全部填成0xcc,当字符串看就是烫烫烫烫……会把未初始化的堆内存全部填成0xcd,当字符串看就是屯屯屯屯……可以让我们方便地看出那些内存没初始化但是Release模式下不会有这种附加动作,原来那块内存里是什么就是什么名字描述0xCD Clean Memory申请的内存由malloc或者new完成0xDD Dead Memory释放后的内存,用来检测悬垂指针0xFD Fence Memory动态申请后的内存值,没有初始化。用来检测数组的下标界限0xAB (Allocated Block?)使用LocalAlloc()分配的内存0x0DF0ADBA Ba 阅读全文

Qt的国际化

2012-04-27 21:59 by Rollen Holt, 421 阅读, 收藏, 编辑
摘要: 请参看:http://www.kuqin.com/qtdocument/i18n.html http://blog.csdn.net/dbzhang800/article/details/6334852 阅读全文

C++ 对象的内存布局(下)

2012-04-27 00:23 by Rollen Holt, 579 阅读, 收藏, 编辑
摘要: 原文地址:http://blog.csdn.net/haoel/article/details/3081385 (注:看本文的时候由于宿舍快断电了,来不及细看,所以怕自己忘记,先贴出来.不排除文章有错误,大家自己测试一下.) 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的... 阅读全文

C++ 对象的内存布局(上)

2012-04-27 00:02 by Rollen Holt, 942 阅读, 收藏, 编辑
摘要: 原文地址:http://blog.csdn.net/haoel/article/details/3081328 为尊重原作者的创作成果,所以原文全部内容都会保留,但是会适当添加我的理解。 前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续... 阅读全文

C++ 虚函数表解析

2012-04-26 21:21 by Rollen Holt, 1950 阅读, 收藏, 编辑
摘要: 转自:http://blog.csdn.net/haoel/article/details/1948051 本人修改部分(添加了代码验证) 在此感谢原作者 ,写出这么好的文章(虽然转的,但是文章确实不错,所以还是脸皮厚点发到首页......,管理员,你看着办吧!!!)前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时. 阅读全文

字典树(Trie tree)

2012-04-24 21:48 by Rollen Holt, 14126 阅读, 收藏, 编辑
摘要: Trie,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。性质它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点的所有子节点包含的字符都不相同。[编辑]图示这是一个Trie结构的例子: 在这个Trie结构中,保存了A、to、tea、ted、ten、i、in、inn这8个字符串,仅占用8个字节(不包括指针占用的空间)。实例这是一 阅读全文

使用模板实现编译期间多态

2012-04-19 21:59 by Rollen Holt, 835 阅读, 收藏, 编辑
摘要: #include <iostream>using namespace std;class DemoOne{public: void f(bool someParm=true){ cout<<"DemoOne f functions\n";} void g(){ cout<<"DemoOne g functions\n";} // other functions...};class D... 阅读全文

一段c++代码小例子

2012-04-18 10:18 by Rollen Holt, 816 阅读, 收藏, 编辑
摘要: #include <iostream>using namespace std;class Base{public: virtual void P() { cout<<"Base::P"<<endl; }};class Dev : public Base{public: virtual void P() { cout<<"Dev::P"<<endl; }};typedef void (Base::*Func)();int main (){ Func pfunc = &Base::P; De 阅读全文

今晚见的几个代码

2012-04-15 23:05 by Rollen Holt, 599 阅读, 收藏, 编辑
摘要: 1 char a = 256;2 int b = a;3 b++;4 cout << b << endl; // 答案是1 #include "stdafx.h"#include <iostream>using namespace std;struct TSA{ int a; int b; int c;};struct TSB{ int a; int b; int c; int ... 阅读全文

在VS如何查看汇编代码

2012-04-15 22:43 by Rollen Holt, 16738 阅读, 收藏, 编辑
摘要: 由于最近不常用,结果导致今天用的时候忘记了,╮(╯▽╰)╭。现在标记一下:方法如下,先创建一个C++ Project,然后加入上面的代码,在main函数或者其他地方设置断点,注意是Debug版本,否则代码经过优化会多很多。然后按钮F5或者点击Debug->Start Debuging程序会走到main处停下。然后点击按钮 Debug->Windows->DisAssambly即可看到汇编窗口 阅读全文

资料推荐

2012-04-14 23:44 by Rollen Holt, 476 阅读, 收藏, 编辑
摘要: 推荐一下侯捷前辈的《池内春秋》下载地址http://t.cn/zOpi8ww同时百度文库的一篇文章页推荐一下:http://t.cn/zOpi8wZ 阅读全文

const char*和const char[]怎么识别?

2012-04-14 15:59 by Rollen Holt, 1406 阅读, 收藏, 编辑
摘要: #include <iostream>using namespace std;template<typename T> class _ischararray_;template<typename T, int N> class _ischararray_<T[N]> { public: static bool _ischararray(){return true;}}; template<... 阅读全文

创建可重用代码(C++)

2012-04-14 13:45 by Rollen Holt, 545 阅读, 收藏, 编辑
摘要: 现在我们学习了如何使用 Visual Studio IDE 以及如何创建命令行应用程序和 Windows 应用程序,下面我们将学习如何编写代码,以便可以让多个应用程序使用该代码。 执行此操作的一种方法是创建包含相关类和算法的库。 例如,Visual C++ 附带了许多任何 C 或 C++ 应用程序都可以使用的库,如 C 运行库和标准 C++ 库。 如果没有这些库,则 C 或 C++ 应用程序没有写... 阅读全文

演练:创建和使用托管程序集 (C++)

2012-04-14 13:42 by Rollen Holt, 902 阅读, 收藏, 编辑
摘要: 托管程序集是一种库,您可以创建该库以便高效地重用代码。 这样,就不必在多个程序中重新实现同样的例程,而只需编写这些例程一次,然后在需要该功能的应用程序中引用它们即可。 本演练涵盖以下任务: 创建一个类库项目。 向该类库添加类。 创建引用该类库的应用程序。 在应用程序中使用类库的功能。 运行应... 阅读全文

演练:创建和使用静态库 (C++)

2012-04-14 13:37 by Rollen Holt, 4510 阅读, 收藏, 编辑
摘要: 我们将创建的下一个库类型是静态库 (LIB)。 使用静态库是重用代码的一种绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。 本演练演示如何完成以下任务: 创建静态库项目。 向静态库添加类。 创建引用静态库的控制台应用程序。 在应用程序中使... 阅读全文

演练:创建和使用动态链接库 (C++)

2012-04-14 13:32 by Rollen Holt, 650 阅读, 收藏, 编辑
摘要: 我们将创建的第一种类型的库是动态链接库 (DLL)。 使用 DLL 是一种重用代码的绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。 本演练涵盖以下内容: 创建新的动态链接库 (DLL) 项目。 向动态链接库添加类。 创建引用动态链接库的应用程序。 ... 阅读全文

QT中的各种对话框

2012-04-14 10:15 by Rollen Holt, 4353 阅读, 收藏, 编辑
摘要: 大家可以参见QT中各种MessageBox的使用的这篇文章 界面效果图如下,大家可以用代码自己操作 diglog.h #ifndef DIALOG_H #define DIALOG_H #include <QDialog> QT_BEGIN_NAMESPACE class QCheckBox; class QLabel; class QErrorMessage; QT_END_... 阅读全文

QT中Dialog的使用

2012-04-14 10:06 by Rollen Holt, 7856 阅读, 收藏, 编辑
摘要: 先看看效果图: pages.h #ifndef PAGES_H #define PAGES_H #include <QWidget> class ConfigurationPage : public QWidget { public: ConfigurationPage(QWidget *parent = 0); }; class QueryPage : publ... 阅读全文

QT中ClassWizard例子

2012-04-14 09:48 by Rollen Holt, 2475 阅读, 收藏, 编辑
摘要: ClassWizard.h #ifndef CLASSWIZARD_H #define CLASSWIZARD_H #include <QWizard> QT_BEGIN_NAMESPACE class QCheckBox; class QGroupBox; class QLabel; class QLineEdit; class QRadioButton; QT_END_NAMESP... 阅读全文