C++
文章平均质量分 51
sjxbf
这个作者很懒,什么都没留下…
展开
-
C++程序设计最佳实践(1)
<br />随着计算机语言的发展,我们现在编写一个程序越来越容易了。利用一些软件开发工具,往往只要通过鼠标的拖拖点点,计算机就会自动帮你生成许多代码。但在很多时候,计算机的这种能力被滥用了,我们往往只考虑把这个程序搭起来,而不去考虑程序的性能如何,程序是否足够的健壮。而此节课的目的主要是介绍一些编码的经验,让大家编写的程序更加健壮和高性能。<br /><br /> 1、Prefer const and inline to #define <br /><br /> 在C++编程中应该尽量使用const和i转载 2011-05-12 22:28:00 · 483 阅读 · 0 评论 -
单链表的基本操作实现
#include#includeusing namespace std;typedef struct node { int data; struct node *next;}slink;void create(slink *&head){ head = new slink; head->next = NULL;}void getle原创 2011-06-03 10:29:00 · 657 阅读 · 0 评论 -
内存对齐
<br /> 在最近的项目中,我们涉及到了“内存对齐”技术。对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”。“内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该再透明了。 <br />内存对齐(3张)<br /> 一、内存对齐的原因内存对齐(3张) <br /> 大部分的参考资料都是如是说的: <br /> 1、平台原因(移植原因转载 2011-04-11 21:58:00 · 420 阅读 · 0 评论 -
关于while(cin>>str)
<br />输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get() 就会检测输入缓冲区中是否有了可读的数据。cin.get() 还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+D 之后立即响应的方式。如果在按 Ctrl+D 之前已经转载 2011-04-12 11:18:00 · 984 阅读 · 0 评论 -
大整数相加
http://www.oschina.net/code/snippet_126251_4292#include#includeusing namespace std;int main(){ int len1,len2,len; int i,k; char a[200],b[200]; char c[201]; cout gets(a); cout gets(b); len1=strlen(转载 2011-06-07 16:52:00 · 458 阅读 · 0 评论 -
浮点数比较大小
#include using namespace std;//浮点数仅仅是实数在某种范围内的一种近似const double delta = 0.000001;bool equal(double x, double y){ return (x y - delta);}void main(){ double x = 1.3; double y = 0.4; double z = x + y;原创 2011-06-09 16:43:00 · 677 阅读 · 0 评论 -
内存中的代码
#include using namespace std;int a;int main(){ int i; unsigned char* c; a = 5; //00401358 mov dword ptr [a (00439490)],5 c = ((unsigned char*)0x00401358); //0x00401358 内存中a=5的起始地址 for (i = 0; i {原创 2011-06-12 11:14:00 · 746 阅读 · 0 评论 -
指向函数指针
//指向函数的指针 函数类型 (*指针变量名)(参数列表);#include #include //integal(x^2)double func1(double a, double b){ double sum = 0.0; double length = 0.000001; double x = a; while ( x { sum += x * x * 0.000001原创 2011-06-12 11:40:00 · 495 阅读 · 0 评论 -
探索C++的秘密之详解extern "C"
探索C++的秘密之详解extern "C"http://tech.163.com 2006-01-18 09:24:41 来源: 博客园 网友评论0 条 论坛 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #e转载 2011-07-06 21:26:03 · 516 阅读 · 0 评论 -
求两个数max
#includeusing namespace std;int max (int a, int b){int array[2] = {a, b};int i = (a - b) >> 31 & 0x1 ;return array[i];}原创 2011-09-07 10:49:29 · 748 阅读 · 0 评论 -
判断数组中是否存在两数之和等于X
#include#include#includeusing namespace std;bool findsum(int* s, int len, int sum) // 时间复杂度O(n){bool flag = false; int *p =原创 2011-09-22 17:21:51 · 2085 阅读 · 2 评论 -
三十分钟掌握STL
<br />三十分钟掌握STL <br />这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。 <br /><br />译者:kary<br /><br />contact:karymay@163.net<br />STL概述<br /><br />STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分转载 2011-04-09 11:46:00 · 725 阅读 · 0 评论 -
C/C++返回内部静态成员的陷阱
<br />C/C++返回内部静态成员的陷阱<br /><br />陈皓<br /><br />背景<br /><br />在我们用C/C++开发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你一定要返回一块函数外部还有效的内存。<br /><br />这是一个让无数人困扰的问题。如果你一不小心,你就很有可能在这个上面犯错误。转载 2011-05-24 16:24:00 · 619 阅读 · 0 评论 -
return语句
<br />return语句用于结束当前正在执行的函数,并将控制权返回给此函数的函数。<br />形式:<br />return;<br />return expression; <br />1、没有返回值的函数<br /> return语句不是必须的,隐式的return发生在函数的最后一个语句完成时。<br /> 返回类型是void的函数通常不能使用第二种形式的return语句,但是,它可以返回另一个返回类型同样是void的函数的调用结果;<br />2、具有返回值的函数 <br />必须返回一个值,返原创 2011-05-24 11:14:00 · 956 阅读 · 0 评论 -
内联析构函数
<br />#include<iostream><br />using namespace std;<br />class A<br />{<br />public:<br /> void foo()<br /> {<br /> cout << "A";<br /> }<br /> ~A();<br />};<br />inline A::~A()<br />{<br /> cout << "inline";<br />}<br /><br />int main()<br />{<br /> A *niu转载 2011-05-16 22:23:00 · 753 阅读 · 0 评论 -
struct继承例子
<br />#include<iostream><br />using namespace std;<br /><br />enum BREED {GOLDEN, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB};<br /><br />struct Mammal<br />{<br />public:<br /> Mammal(): itsAge(2), itsWeight(5){}<br /> ~Mammal(){}<br /><br /> int GetAge() con转载 2011-05-17 10:19:00 · 756 阅读 · 0 评论 -
C++ explicit小节
在C++中,可以通过将构造函数声明为explicit来防止在需要隐式转换的Context中使用构造函数。class B{private: int data;public: explicit B() //去掉explicit程序才能正常运行 { cout } ~B() { cout } B(int i) : data(i) //带参构造函数 :后面试成员变量初始化列表 { cout }};B Play(B b){ return b;}int main(int argc, char* ar原创 2011-05-16 22:16:00 · 520 阅读 · 0 评论 -
一个跨平台的 C++ 内存泄漏检测器
吴咏炜 (adah@netstd.com), 系统工程师简介: 内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧。在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏。在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性、附加开销和性能都不是很理想。本文实现一个极易于使用、跨平台的C++内存泄漏检测器。并对相关的技术问题作一下探讨。标记本文!发布日期: 2004 年 3 月 01 日 级别: 初级 访问情况 2639转载 2011-05-17 20:58:00 · 558 阅读 · 0 评论 -
C++ 句柄与指针的区别
<br />学习C++的人都知道句柄和指针,而且我发现很多人在句柄与指针之间直接划等号,对我们来说两者都是地址,我觉的这也造成很多人将句柄和指针划等号的直接原因。<br /><br /> 首先说指针吧。通俗一点就是地址,他是内存的编号,通过它我们可以直接对内存进行操作,只要地址不变,我们每次操作的物理位置是绝对不变,记住这句话,这是句柄和指针的重大区别所在。<br /><br /> 再说说句柄吧,一般是指向系统的资源的位置,可以说也是地址。但是这些资源的位置真的不变,我们都知道window支持虚拟内存的转载 2011-05-19 20:04:00 · 762 阅读 · 0 评论 -
C++类的继承
<br />#include<iostream><br />#include<string><br />using namespace std;<br /><br />class B1<br />{<br /> char *a;<br />protected:<br /> B1(): a(0){} //只能由本类及派生类调用<br />public:<br /> ~B1()<br /> {<br /> delete []a;<br /> cout << "B1 ";<br /> }<br /> voi原创 2011-05-23 21:43:00 · 418 阅读 · 0 评论 -
析构函数的奥秘
<br />请看如下一段代码:<br /><br />#include<iostream><br />using namespace std;<br /><br />class A<br />{<br />public:<br /> A()<br /> {<br /> pValue = new int[100];<br /> cout << "Constructor of A" << endl;<br /> }<br /> ~A()<br /> {<br /> delete []pValue;<br转载 2011-05-23 23:00:00 · 566 阅读 · 0 评论 -
C++定义与声明 区别
C++ 声明 定义转载 2011-04-08 17:13:00 · 45353 阅读 · 19 评论 -
C++ string CString 详解
<br />C++ string 详解<br /><br /><br /><br />前言: string 的角色 <br />1 string 使用 <br />1.1 充分使用string 操作符 <br />1.2 眼花缭乱的string find 函数 <br />1.3 string insert, replace, erase 2 string 和 C风格字符串 <br />3 string 和 Charactor Traits <br />4 string 建议 <br />5 小结 <br转载 2011-04-08 17:20:00 · 5756 阅读 · 0 评论 -
C++ 虚函数 多态
<br />1、什么是虚函数和多态 <br /><br /><br /> 虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。<br /> 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。<br /><br /> 举个例子说明虚函数、多态、早绑定和晚绑定:<br /> 李氏两兄妹(哥哥和妹转载 2011-05-23 22:03:00 · 468 阅读 · 0 评论 -
字符串
/*void reverse(char *s) //字符串逆转{char temp;int i = 0;int j = strlen(s) - 1;while(i {temp = s[i];s[i] = s[j];s[j] = temp原创 2011-09-25 16:39:49 · 730 阅读 · 0 评论