新疆软件开发

本站首页 软件开发 成功案例 公司新闻 公司简介 客服中心 软件技术 网站建设
  您现在的位置: 新疆二域软件开发公司 >> 开发语言 >> 文章正文

C++类的友元成员

         没有友元之前,一个类是不能直接访问其它类的private成员的
       引进友元机制是允许一个类的private,protected成员的访问权授予给指定的其它函数和其它类
2.定义
定义友元的关键字friend
格式:
class classname{
...
friend functionname();//声明类的友元函数
friend class othername();//声明类的友元类
};
functionname(){}       //定义友元函数代码细节
class othername(){};        //定义友元友元类代码细节
2.1.在类中定义友元函数
代码举例
//friend1.cpp pass with vc++6.0 or dev-c++4.9
#include <iostream>
class x{
public:
x():a(11),b(33){}//构造函数初始化列表
friend void x_friend_f(x&);
friend class use_x;
private:
int a;
int b;
};
void x_friend_f(x& xx)//x的友元函数实现
{std::cout<<"a,b in class x is: "<<xx.a<<","<<xx.b<<std::endl;}

int main(){
x demo;
x_friend_f(demo);
return 0;
}
.在类中定义友元类
class screen{
public:
...
 friend class window_msg;//在类中声明一个友元window_msg类
priavte:
int height;
int width;
int index;
};
//在另一类window_msg中直接访问screen类的private成员
class window_msg{
public:
...
};
//友元类可以直接访问
window_msg& window_msg::relocate(screen::index r,screen::index c,screen& s)
{
s.height +=r;
s.width +=c;
return *this;
}
3.基类与派生类
友元关系不能被继承,基类的友元对派生类的成员没有任何访问权限
也就是说如果基类有友类函数和友元类,它们能访问基类任何成员,而不能访问由这个基类继承的派生类的任何成员
4.设计指导
类的友元函数又叫做类的非成员函数
1.何时使用类的成员函数
当我们对类自身对象进行操作时,操作如赋值=,下标(),调用(),自增++,自减--
操作的返回结果也在类的自身对象,就直接选择用成员方法实现
2.何时使用类的非成员函数即友元函数
当我们对类的两个以上对象进行操作时,如关系运算,输入>>,输出<<,请选用友元函数

作者:未知 | 文章来源:未知 | 更新时间:2008-1-15 16:43:02

  • 上一篇文章:

  • 下一篇文章:

  • 相关文章:
    C++基础知识:结构体数据的指针变量
    如何实现C与C++程序的相互调用
    在C++中成员函数如何实现操作符重载?
    基础学习:C++非成员函数实现操作符重载
    基础学习:C++重载输入输出符
    基础学习:C++重载下标结算符
    基础学习:C++中重载调用操作符
    基础学习:C++重载转换操作符operator (type)
    C++类复制控制学习
    C++类析构函数学习
    软件技术
    · 开发语言
    · Java技术
    · .Net技术
    · 数据库开发
    最新文章  
    ·搜集整理的asp.net的验证方
    ·各种FOR循环结构的整理
    ·软件项目开发中应该考虑那
    ·搜集整理的javascript sel
    ·软件开发中项目经理有那些
    ·学习如何在Lambda表达式进
    ·C++基础知识:结构体数据的
    ·C#实现短信发送程序的例子
    ·sun最近修补了一部分java的
    ·rss定制的另外一种实现方式
    ·delphi实现利用arp欺骗来实
    ·基础学习:基于WF的流程框
    ·网络编程中怎样得知一次数
    ·如何逆序输出单链表?
    ·软件开发过程中的性能设计
    关于我们 | 软件开发 | 下载试用 | 客服中心 | 联系我们 | 友情链接 | 网站地图 | 新疆电子地图 | RSS订阅
    版权所有 © 2016 新疆二域软件开发网 www.k8w.net All Rights Reserved 新ICP备14003571号
    新疆软件开发总机:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆乌鲁木齐北京中路华联大厦A-5C 邮编:830000