2016年6月1日

C++拾遗(十三)友元和嵌套类

摘要: 友元类 使用友元的场合: 1、两个类既不是is-a关系也不是has-a关系,但是两个类之间又需要有联系,且一个类能访问另一个类的私有成员和保护成员。 2、一个类需要用到另外多个类的私有成员。 C++primer一书中给出的例子:电视和遥控器。 友元声明可以位于原始类的任何位置(public,priv 阅读全文

posted @ 2016-06-01 15:23 DeathKnightH 阅读(276) 评论(0) 推荐(0)

2016年5月23日

C++拾遗(十二)C++代码重用

摘要: “has-a”关系 通常有两种方法实现: 1、被包含,本身是另一个类的对象。 2、私有或者保护继承。 主要讨论第二种方法,在继承时使用private关键字(或者不用任何关键字,默认就是私有的)。 使用私有继承,则基类的所有成员在派生类中都将成为私有的成员。此时,派生类将继承基类的实现,而不继承接口。 阅读全文

posted @ 2016-05-23 16:40 DeathKnightH 阅读(579) 评论(0) 推荐(0)

2016年5月9日

C++拾遗(十一)类继承

摘要: 首先,这里提到的继承都是公用继承。 派生类 1、派生类需要添加自己的构造函数。 2、派生类创建之前会首先创建基类对象,即调用基类构造函数。在派生类构造函数后通过初始化列表将参数传递给基类构造函数。 3、派生类的构造函数主要用于初始化新增的数据成员。 4、释放对象时与创建相反,先调用派生类的析构函数再 阅读全文

posted @ 2016-05-09 14:34 DeathKnightH 阅读(250) 评论(0) 推荐(0)

2016年5月6日

C++拾遗(十)类与动态内存分配(2)

摘要: 静态成员函数 声明时包含关键字static。注意以下两点: 1、使用静态成员函数时不能通过对象或者this指针来调用,只能使用类名+作用域解析符来调用。 2、静态成员函数只能使用静态成员。 new操作符 在使用 之后,new操作符可以在分配内存时指定内存位置。例如: delete ptr1调用了类的 阅读全文

posted @ 2016-05-06 19:06 DeathKnightH 阅读(168) 评论(0) 推荐(0)

C++拾遗(九)类与动态内存分配(1)

摘要: 创建类时编译器自动生成以下成员函数(如果用户没有定义): 1、默认构造函数 2、拷贝构造函数 3、赋值操作符 4、默认析构函数 5、地址操作符 以下一一说明: 构造函数 构造函数在创建对象时被调用。 在用户没有提供构造函数时,编译器将创建一个默认构造函数,这个构造函数不接受任何参数,也不执行任何操作 阅读全文

posted @ 2016-05-06 16:40 DeathKnightH 阅读(209) 评论(0) 推荐(0)

C++拾遗(八)类——概念、定义与实现

摘要: Class与Struct 区别在于class默认访问类型是private,struct默认访问类型是public。 另外在使用习惯上,struct只用来表示纯粹的数据对象或没有私有部分的类。 类中的内联函数 这两者是等价的。 类的实例 每个对象有自己的存储空间储存各自的内部变量和类成员,但是同一个类 阅读全文

posted @ 2016-05-06 09:45 DeathKnightH 阅读(173) 评论(0) 推荐(0)

2016年4月20日

C++拾遗(七)函数相关(2)

摘要: 内联函数 内联函数与常规函数的区别在于: 1.常规函数:在执行调用指令时,先存储该指令的内存地址,将函数参数复制到堆栈,然后跳转到被调用函数起点的内存单元,执行函数,将返回值放 入寄存器,最后跳回到一开始被保存的指令处。 2.内联函数:编译器将函数调用替换为函数代码,不需要跳转,但是内存开销大。 P 阅读全文

posted @ 2016-04-20 11:10 DeathKnightH 阅读(196) 评论(0) 推荐(0)

2016年4月18日

C++拾遗(六)函数相关(1)

摘要: 返回值 C++规定返回值不能是 数组。但可以是其它任何类型(包括结构体和对象)。 通常,函数将返回值复制到指定的CPU寄存器或内存单元中,然后调用函数调用该内存单元的值。 函数原型 参数列表中可以不包括变量名,原型中的变量名相当于占位符,不需要与函数定义中一样。 在C++中,原型的()中为空意味着没 阅读全文

posted @ 2016-04-18 11:32 DeathKnightH 阅读(142) 评论(0) 推荐(0)

2016年3月30日

C++拾遗(五)语句相关

摘要: 前缀格式与后缀格式 对于表达式:后缀如 i++ 表达式的值仍是 i,在遇到下一个顺序点后再将 i 加1。前缀 ++i 表达式的值就是(i+1),先计算表达式的值,不需要等待 顺序点。 对于类:前缀函数效率比后缀函数高,后缀函数需要首先复制一个拷贝,加 1 完成后将复制的拷贝返回。而前缀函数是将值加 阅读全文

posted @ 2016-03-30 09:45 DeathKnightH 阅读(243) 评论(0) 推荐(0)

2016年3月22日

C++拾遗(四)指针相关

摘要: 指针声明与初始化 在将指针初始化为一个确定的地址后,才能安全的对指针使用 *操作。 将整数赋值给指针时要使用强制转换(typeName *)。 分配内存 C中用malloc(); C++更提倡使用new操作符。 new typeName;如果成功则返回一个适合typeName的地址并返回; 如果失败 阅读全文

posted @ 2016-03-22 15:15 DeathKnightH 阅读(133) 评论(0) 推荐(0)

导航