C++从零开始(二)——何谓表达式
本篇是此系列的开头,在学英语时,第一时间学的是字母,其是英语的基...
C++从零开始(一)——何谓编程
引言 曾经有些人问我问题,问得都是一些很基础的问题,但这些人却已经能使用VC编一个对话框界面来进行必要的操作或者是文档/视界面来实时接收端口数据并动态显示曲线(还使用了多线程技术),却连那些基础的问题都不清楚,并且最严重的后果就是导致编写出拙劣的代码(虽然是多线程,但真不敢恭维),不清楚类的含义,混杂使用各种可用的技术来达到目的(连用异常代替选择语句都弄出来了),代码逻辑混乱,感觉就和金山快译的翻译效果一样。 我认为任何事情,基础都是最重要的,并且在做完我自定的最后一个项目后我就不再做编程的工作,守着这...
c++ using namespace 详解
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 一 : iostream和iostream.h是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为。h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带。h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀。h....
C++ boost 正则表达式用法
什么是正则表达式?正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express. 如果您不知道什么是正则表达式,请看这篇文章http://blog.csdn.net/begtostudy/archive/2007/11/11/1879206.aspx 有了正则表达式的基础,问题是如何使用。我们以boost::regex来说 先看一个网上经典的例子。 #include "stdafx.h" #include cstdlib #include stdlib.h #include...
重读C++ prime有感(1)-指针和引用参数
两种参数都允许函数修改实参所对应的对象,两种类型的参数都允许有效得向函数传递大型类对象。 两者在参数传递过程中,有如下几点不同: (1)引用必须被初始化为指向一个对象,一旦初始化了,它就不能在指向其它对象。指针可以指向一系列不同的对象,当然也可以定义为NULL; 如: calss Type{ void operation(const Typep1,const Typep2); int main(){ Tyoe obj1; Type obj2 = operation(obj1,0); //引用参数的实参不...
C++之路 堆、栈和静态数据
1 堆、栈及静态数据区详解 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它...
简述C和C++的学习历程
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。 一家之言,欢迎拍砖哈。 1、可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。 毕竟,解决具体问题,每个函数内部,都是用C的方...
关于后序递归建二叉树的方法
最简单的一种方法就是逆向输入,然后采用“根右左 ”的顺序建立二叉树 *********************************/ /**//**********Gamesduan*********/ /**//**********BiTreeInLast*********/ #include stdio.h #include conio.h #include stdlib.h #include malloc.h #define NULL 0 int n=0; typedef struct bit...
c++类对象的内存模型
C++类对象内存结构 首先介绍一下C++中有继承关系的类对象内存的布局:在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。 对于子类,最开始的内存数据记录着父类对象的拷贝(包括父类虚函数表指针和成员变量)。 之后是子类自己的成员变量数据。 对于子类的子类,也是同样的原理。但是无论继承了多少个子类,对象中始终只有一个虚函数表指针。 为了探讨C++类对象的内存布局,先来写几个类和函数 首先写一个基类: class Base...
c/c++中内存区域划分大总结
一、 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.另外还有一个专门放常量的地方。- 程序结束释放 5 程序代码区,存放2进制代码。 在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的...
基础入门:C++中CONST的用法
IBM的一道关于CONST的笔试题看得我很是晕啊,题目是这样的: const char *const * keywords const char const * keywords const char *const keywords const char const keywords 下面总结一下CONST的用法。const主要是为了程序的健壮型,减少程序出错。const指针和引用一般用在函数的参数中。最基本的用法如下: // a的内容不变,a只能是100也就是声明一个int类型的常量(#define...
详细解析C++虚函数表
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。 当然,...