摘要:
对象的初始化、拷贝构造和析构函数 20131002构造函数、析构函数、赋值函数是类的基本函数。每一个类只有一个析构函数,但是可以有多个构造函数、多个赋值函数。一般如果类中没有显示的声明和定义上述函数,C++编译器会自动为其生成4个public inline默认函数A(), A(const A&), ~A(), A& operator=(constA& a)1.构造函数和析构函数的起源 C++编译器有更加严格的类型安全检查机制,几乎可以找到程序的所有语法错误。但是很多错误因为变量没有争取的初始化或者清除导致,而初始化和清除的工作经常被遗忘,所以有了类的构造函数用于初始化数 阅读全文
摘要:
C/C++高级数据类型1.C语言支持把基本数据类型组合起来形成更加强大的构造数据类型,就是C语言的struct(UDT, User Defined Type). Struct 和class : 在C++中对C语言的struct进行类改造,使其也可以像C++中的struct那样支持成员函数的声明和定义,从而使struct成为了ADT( Abstract Data Type).在C++中如果不声明访问类型,struct默认的是public,class默认的是private,这也就是在C++中struct和class的唯一区别之处。 对象是不可以自己包含自己的,因为无法计算sizeof,这样编译的时 阅读全文
摘要:
C/C++ 指针、数组和字符串本次学习指针、数组、字符串、引用的内存映像。1.指针 指针的本质:可以执行的程序是由指令、数据和地址组成的。当CPU访问内存单元的时候,不论是读取还是写入,首先要把内存单元的地址加载到地址总线AB上,同时将内存电路的读写控制设置成有效,然后内存单元中的数据通过数据总线(DB)流向寄存器。或者是结果寄存器中的值流线目标内存单元。这就是一个内存读写周期。 内存单元地址就是我们的指针。指针是一个变量,他和我们使用的整形变量,字符变量等等没有什么本质的差别,不同的是他们的类型和值得含义,即解释方式。在二进制层面上,指针的值就是内存地址的单元,而变量又是引用内存单元值的别名 阅读全文
摘要:
C++异常处理和RTTI技术 201309301.异常处理的基本知识C语言中是没有内置运行时错误处理机制,对于错误发生的时候使用的几种处理机制:函数返回彼此协商后统一定义的状态编码来表示操作成功、失败或者是其他类型的错误;使用全局变量来保存错误编码,每一个使用到他的函数在开始的时候都会检查他的值,并且每一个函数的操作结果都会写到这个全局变量中,如使用errno表示任何一个函数调用返回后产生的错误码;出错的时候终止程序的运行。 但是这些传统的方法村下载一些问题:没有形成统一的标准;将正常的代码和错误处理程序紧紧的绑定在一起;有些函数式咩有返回值的;全局的错误变量,不仅在函数的开头检查它,而且有时 阅读全文
摘要:
C/C++常量的知识 20130918语言的实现隐含着使用着一些常量,如初始化全局变量静态变量,另外还有一些我们不曾感觉到的变量:函数地址(也就是函数名称), 静态数组的名字,字符串常亮的地址。常量可以分为:字面常量,符号常量,契约性常量,bool常量,枚举常量一、常量的种类1.字面常量是保存在程序的符号表中而不是一般的数据区(实际上是静态存储区而不是栈中),这些符号是只读的,是一种访问保护机制。我们无法获取这些常量的地址。而且对于字符串常量,我们不可以使用字符串的地址修改他们的值 char * p= “yang”’; 相当于 const char *p = “yang”;2.符号常量 使用# 阅读全文
摘要:
C/C++ 函数设计基础 20130918函数式程序的基本功能单元,是模块化程序设计的基础,即使函数的功能正确是不够的,因为函数设计的细微缺点很容易导致函数被错用。 了解函数的基本知识,堆栈和堆的相似点和不同点;函数的接口设计和内部实现,断言、const,存储类型,递归函数等等。1.认识函数 函数分为库函数和用户自定义的函数,两者在本质上是一致的,知识前者是预编译好的。对于静态链接的函数库或者类库,如果你调用其中的函数,那么连接器慧聪相应的苦衷调去这些函数实现的源代码并且把它们连接到你的程序中。如果你没有使用库函数,则不会讲他么连接到你的程序中。如果你是用的是动态连接库(DLL),运行的时候需 阅读全文
摘要:
高质量的软件开发1.满足正确性,健壮性,可靠性,性能,易用性,清晰性,安全性,兼容性,扩展性,可移植性等等来评价软件的质量。2.没有错误的程序世间难求,任何一个程序,无论他多么的小,总是存在着错误。3.高质量的编程就是砸干活的时候一次性编写出高质量的程序,而不是等程序处错误的时候再去处理。4.废话大师说过一句:如果我令你很轻松的明白了那你一定是误解了我的意思。还有一种怪现象:如果把文章写的很简洁的,让人很容易明白和理解,往往投稿投不中,只有加上一些玄乎的东西,把本来简单的东西搞的负责的话,才会增加投稿命中率。5.兼容性的商业规则就是:弱者设法于强者兼容,否则无容身之地;强者应当避免被兼容,否则 阅读全文
摘要:
C++ 内存管理1.内存分配的方式有三种: 从静态存储区分配:在程序编译期间已经分配好了,这些在程序的生命周期内都是有效的,如全局变量,static变量一个例子: char * p = "absd";这个是存储在静态存储区的,而且是不可以改变的,这种方式声明是const char * p ="asdf";等效的,只是把他给省略了。不可以通过*p去修改他的值,但是p指针是可以指向其他的内存区域。 但是如果是const char * const p = "asdf";就不可修改p指向的地址,也不可以修改p指向的内容。 在栈上分配内存的方式 阅读全文