2013年3月17日
摘要: 一、类的缺省函数每个类只有一个析构函数和赋值函数,但可以有多个构造函数。对于任意类A,C++编译器自动为A生成四个缺省的函数:A();A(const A &a);~A();A & operate = (const A &a);二、构造函数的初始化表规则:(1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数???(2)类的const常量只能在初始化表里被初始化,因为它不能在函数体用赋值的方式来初始化。(3)非内部数据类型的成员对象应该采用初始化表的方式初始化,以获取更高的效率。如:class A{ A(); A(const A &other); A 阅读全文
posted @ 2013-03-17 21:39 guoxiang 阅读(222) 评论(0) 推荐(0) 编辑
摘要: C++在C的基础上增加了很多高级特性: --const、内联函数替代宏;(更安全) --引用传递替代指针;(更安全) --new/delete替代malloc/free;(能在分配、释放内存的时候执行构造、析构函数) --函数重载、覆盖; --函数缺省参数值; --类(多态)。 阅读全文
posted @ 2013-03-17 20:50 guoxiang 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 一、extern "C"的作用void foo(int x, int y);foo函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号extern "C"来解决这个问题。extern "C"{void foo(intx, int y);}这就告诉C++编译器,foo是个C连接,应该到库中找名字_foo而不是找_foo_int_int。二、隐式类型转换导致重载函数产生二义 阅读全文
posted @ 2013-03-17 20:42 guoxiang 阅读(286) 评论(1) 推荐(0) 编辑
摘要: 一、内存分配有三种方式:(1)从静态存储区域分配。内存在程序编译时就已分好,在程序的整个运行期间都存在。例如全局变量,static变量,常量字符串。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配,亦称动态内存分配。程序运行时用malloc或new申请任意多少的内存,用free或delete释放。规则:(1)申请内存以后,检查指针是否是NULL,避免内存申请不成功。(2)给内存赋初值。(3)避免数组或指针的下标越界。(4)动态内存的申请与释放必 阅读全文
posted @ 2013-03-17 17:51 guoxiang 阅读(165) 评论(0) 推荐(0) 编辑