1. 友元函数和友元类的需要: 类具有封装和信息隐藏的特性。 只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。 非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。 另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参 ...
分类:
编程语言 时间:
2017-04-26 11:01:45
阅读次数:
156
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include<iostream> #include<string> using namespace ...
分类:
编程语言 时间:
2017-04-21 00:10:19
阅读次数:
192
就语言而言,个人还是比较喜欢C++,尽管C++有些语法方面确实比较深奥,但这些确实挡不住它在实际应用中不可被替代的位置。开始谈今天的重点,如何定义一个特殊的C++类。1、定义不可被继承的C++类如何让一个类不能被继承呢?简单来说,我们希望达到的效果,就是如果继承这个类的..
分类:
编程语言 时间:
2017-04-14 10:50:04
阅读次数:
186
#include using namespace std; // 定义仅由HasPtr类使用的U_Ptr类,用于封装使用计数和相关指针 // 这个类的所有成员都是private,我们不希望普通用户使用U_Ptr类,所以它没有任何public成员 // 将HasPtr类设置为友元,使其成员可以访问U_... ...
分类:
其他好文 时间:
2017-04-13 18:07:09
阅读次数:
160
1. 问题的引入——将operator*模板化 Item 24中解释了为什么对于所有参数的隐式类型转换,只有非成员函数是合格的,并且使用了一个为Rational 类创建的operator*函数作为实例。在继续之前建议你先回顾一下这个例子,因为这个条款的讨论是对它的扩展,我们会对Item 24的实例做 ...
分类:
编程语言 时间:
2017-04-11 09:37:46
阅读次数:
273
友元函数(不属于类) 可以访问类的私有变量,以及私有函数 友元函数在类内声明需要friend关键字,类外定义就不需要 友元函数可以直接在类内定义 友元函数必须包含对象指针 友元类(不适用继承,只适用当前类) 若F类是A类的友元类,则F类的所有成员函数都是A类的友元函数 友元类通常设计为一种对数据操作 ...
分类:
编程语言 时间:
2017-04-08 10:08:12
阅读次数:
272
在类模板中可以出现三种友元声明:(1)普通非模板类或函数的友元声明,将友元关系授予明确指定的类或函数。(2)类模板或函数模板的友元声明,授予对友元所有实例的访问权。(3)只授予对类模板或函数模板的特定实例的访问权的友元声明。 要注意的是,友元函数并非成员函数,是改变了它对类成员的访问权限。 (1)没 ...
分类:
编程语言 时间:
2017-03-31 15:44:43
阅读次数:
218
对象赋值-赋值运算符重载 赋值运算符函数是在类中定义的特殊的成员函数 典型的实现方式: 流运算符重载函数的声明 istream& operator>>(istream& in, Test& dst); ostream& operator<<(ostream& out, const Test& src ...
分类:
编程语言 时间:
2017-03-26 21:09:26
阅读次数:
207
(1).inline:是一种以空间换时间的做法省去调用函数的额外开销,提高程序的运行效率,它对于编译器而言只是一种建议 (2).友元函数:是可以直接访问类的private成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明 友元类:友元类的所有成员函数都可以是另一个 ...
分类:
其他好文 时间:
2017-03-25 00:12:09
阅读次数:
302
最容易想到的是将拷贝构造函数与赋值函数声明为private。但是,private只是说外部不能直接调用,但是可以间接通过类的成员函数与友元函数对其访问。那么怎么办呢? 》在类中,允许声明函数,但是,可以不用实现该函数,这是合法的。那么即使是在public中声明函数,但是不实现,那么调用这个函数也是会 ...
分类:
编程语言 时间:
2017-03-20 22:01:43
阅读次数:
254