今天写C++primer 5th中文版第422页的程序时,出现了”不允许使用不完整的类型“的错误,下面我就用类A 与 类B 作为代表,重现一下该错误,并且提出解决方案。一、带问题的类设计A:1、类A放在A.h 与 A.cpp中2、由于B需要访问A的私有成员,故声明B是其友元类3、A中需要利用自身作为...
分类:
编程语言 时间:
2015-04-08 23:01:35
阅读次数:
181
首先回顾一下三种成员访问限定符:
public(公用的):既可以被本类中的成员函数所引用,也可以被类的作用域内的其他函数(即类外)引用。
private(私有的):只能被本类中的成员函数引用,类外不能调用(友元类除外)
protected(受保护的):不能被类外访问,但可以在派生类的成员函数访问。
接下来就用一张表总结一下基类成员在派生类中的访问属性:
参考资...
分类:
其他好文 时间:
2015-04-08 18:15:25
阅读次数:
233
//智能指针类
//----------------------------------------
//1.基数据放在使用计数类中
//实际类指向->使用计数类->基数据
//使用计数类
class U_ptr{
friend class Hasptr;//友元类
int *ip;//这个就是要保护的基数据
size_t use;
U_ptr(int *p):ip(p),use(1){...
分类:
其他好文 时间:
2015-03-18 20:39:07
阅读次数:
121
最近做一个小程序,一个类A(负责显示处理)需要大量调用类B(负责数据处理)的函数,我最先想到的C++中的友元概念,因为类B中的这些函数并不希望public,它只是允许类A调用监测.网上搜索了一下,没有好的简单实现,但是我想到了自己以前经常写的一种方式,那不就是最简单的实现吗? public c...
分类:
编程语言 时间:
2015-03-07 13:48:32
阅读次数:
152
友元分友元函数、友元类。友元函数:一个类的友元函数可以访问该类的私有成员我们可以将一个类的成员函数(包括构造、析构函数)作为另一个类的友元函数。如下class CCar; // 提前声明CCar 类,以便后面的CDriver类使用class CDriver {public: void Modi...
分类:
编程语言 时间:
2015-02-05 23:11:58
阅读次数:
236
友元方式:1、全局函数友元(外部);2、成员函数友元;3、类友元。特点:1、单向;友元不具有传递性、友元不具有继承性。对象的成员有数据和方法,一般将数据设置为private或保护,由于类的封闭性和隐藏性;将方法设置为public。只有通过对象调动一般方法来访问其私有成员。this指针存在于非静态成员...
分类:
其他好文 时间:
2015-01-30 17:23:12
阅读次数:
128
注: 友元是一种定义在类外部的普通函数或类,但它需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。所以,友元声明只能出现在类定义中。因为友元不是授权类的成员,所以它不受其所在类的声明区域public private 和protected 的影响。即友元函数的声明可以出现在类的任何地方
class A
{...
分类:
其他好文 时间:
2014-12-08 17:55:07
阅读次数:
121
最近这些天在重温设计模式GOF23,偶然想到友元,不使用都快忘了
今天重温一下C++友元知识,学了之后几乎就没怎么用到,几乎都是与设计模式打交道的。
虽然说友元能提高效率,表达清晰,但是破坏了类的封装机制,所以一般情况下不建议使用友元,
友元类简单demo:
// 类A,希望把私有成员公开给类B
class A
{
friend class B;// 把B设置为友元类
public...
分类:
编程语言 时间:
2014-12-04 08:51:54
阅读次数:
163
友元的使用
分为友元类和友元函数
// BlankTest.cpp : 定义控制台应用程序的入口点。 // //友元类与友元函数的共同点:都可以让某一个类作为另一个类或者函数的参数。 //友元类:它让当前类成为另一个类的友元,然后,另一个类可以访问当前类的私有成员。 #include "stdafx...
分类:
编程语言 时间:
2014-11-30 18:27:11
阅读次数:
201
一:起因
(0)拿出自己年初实现的queue队列,第一次用c++类实现queue,在和如今实现的其他复杂的STL对比,心情无比复杂;
注释:看到听到当年自己的所写所想,正的是一种享受 —— 倾听自己的幼稚也是一种美。
(1)闲话少说了,我自己现在回答自己的 三 (5) 中提到的问题,函数的返回值是用bool型还是void型??其实函数返回值是bool 还是 void是...
分类:
编程语言 时间:
2014-11-22 21:39:22
阅读次数:
316