所实现的单链表的结构如下图所示:
头文件:SList.h
#include
#include
using namespace std;
typedef enum{FALSE,TRUE}Status;
template
class List;
template
class ListNode
{
friend class List; //友元类可以访问该类的成员
private...
分类:
编程语言 时间:
2015-08-21 11:21:47
阅读次数:
245
在封装中C++类数据成员大多情况是private属性;但是如果接口采用多参数实现肯定影响程序效率;然而这时候如果外界需要频繁访问这些私有成员,就不得不需要一个既安全又理想的“后门”——友元关系;
C++中提供三种友元关系的实现方式,友元函数、友元成员函数、友元类。
友元函数:既将一个普通的函数在一个类中说明为一个friend属性;其定义(大多数会访问该类的成员)应在类后;
友元成...
分类:
其他好文 时间:
2015-08-20 10:38:58
阅读次数:
146
运算符重载
运算符重载就是对已有的C++运算符赋予更多的语义,让一个运算符可以作用于其他的数据类型。 典型地,让运算符接受一个类的对象作为参数。通常有两种方式来重载一个运算符:
声明一个普通函数,作为类的友元。声明为类的成员方法。
事实上,运算符的本质是函数。每个运算符调用会转换为函数调用,运算符的操作数转换为函数参数。 运算符的重载本质上是方法的重载。
这些运算符不允...
分类:
编程语言 时间:
2015-08-18 16:32:18
阅读次数:
178
友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。C++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。友元的正确使用能提高程序的运行效率,但同时也破坏了类.....
分类:
编程语言 时间:
2015-08-15 19:55:48
阅读次数:
110
四种不能重载的运算符:1>::域运算符2>.成员访问运算符3>*成员指针访问运算符((*this).member)4>:?三目运算符只能用友元重载的运算符:1><<输出运算符重载2>>>输入运算符重载即能声明友元又能声明为类的成员函数的运算符重载:1>四则运算符2&g..
分类:
编程语言 时间:
2015-08-15 18:29:13
阅读次数:
166
这是现阶段我自己总结的,希望各位补充一下:先说static:它表示静态所以1、隐藏,全局变量或者全局函数加上static则其他文件无法访问,只在当前文件生效2、保持变量的内容持久,由于static变量存储在全局区一经初始化则知道程序结束菜户被释放3、默认初始化变量的值为04、在定..
分类:
编程语言 时间:
2015-08-11 01:42:44
阅读次数:
183
static 表示静态的意思 在c++中有两种表示 ,静态成员变量和静态成员函数一个类中的静态成员只属于当前类,不属于某个对象。一个类的静态成员只有一份由当前类所有,每个对象都可以访问静态成员,当然也可以通过类名来访问 这里推荐用类名::静态成员来访问static 成员函数应该在所有的成员函数之外....
分类:
其他好文 时间:
2015-08-10 21:40:25
阅读次数:
119
在我前前面已经说过组合类的概念了,今天我再介绍两个类,友元,以及内部类。组合类,就是一个类中有另一个类的对象,如声明一个classpenson,成员变量有姓名,年龄,出生日期等,在声明一个date类,这个类里面就是存的年月日的信息,因此我们可以将person类的出生日期设为date..
分类:
其他好文 时间:
2015-08-10 20:16:48
阅读次数:
126
在团队开发中,如果一个程序集中要调用另外一个程序集,但是要被调用的那个程序集又不想用public来公开自己的类,那么怎么办,就是用最后一种internal来用来做类的可见性了。 下面来看一个简单例子: 1. 在一个解决方案中创建两个类库项目A和B,分别在两个类库项目中创建类ClassA和Class....
c++中友元类可以访问类的所有域,简直是编程世界的老王。...
分类:
编程语言 时间:
2015-08-09 14:13:23
阅读次数:
156