首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 语言基础 >> 正文
C++面向对象编程入门:实例详解C++友元(2)
作者:管宁    文章来源:PConline    更新时间:2006-5-9 10:06:29
一个普通函数可以是多个类的友元函数,对上面的代码我们进行修改,注意观察变化:

#include <iostream>   
using namespace std; 
class Country; 
class Internet   
{   
public:   
    Internet(char *name,char *address)   
    {   
        strcpy(Internet::name,name);   
        strcpy(Internet::address,address);    
    } 
friend void ShowN(Internet &obj,Country &cn);//注意这里 
public:   
    char name[20]; 
    char address[20]; 
}; 
 
class Country 

public
    Country() 
    { 
        strcpy(cname,"中国"); 
    } 
friend void ShowN(Internet &obj,Country &cn);//注意这里 
protected
    char cname[30]; 
}; 
 
void ShowN(Internet &obj,Country &cn) 

    cout<<cn.cname<<"|"<<obj.name<<endl; 

void main()   

    Internet a("中国软件开发实验室","www.cndev-lab.com"); 
    Country b; 
    ShowN(a,b); 
    cin.get(); 
}

  一个类的成员函数函数也可以是另一个类的友元从而可以使得一个类的成员函数可以操作另一个类的数据成员,我们在下面的代码中增加一类Country,注意观察:

#include <iostream>   
using namespace std; 
class Internet; 
 
class Country 

public
    Country() 
    { 
        strcpy(cname,"中国"); 
    } 
    void Editurl(Internet &temp);//成员函数的声明 
protected
    char cname[30]; 
}; 
class Internet 
{   
public:   
    Internet(char *name,char *address)   
    {   
        strcpy(Internet::name,name);   
        strcpy(Internet::address,address);  
    } 
    friend void Country::Editurl(Internet &temp);//友元函数的声明 
protected:   
    char name[20]; 
    char address[20]; 
}; 
void Country::Editurl(Internet &temp)//成员函数的外部定义 

    strcpy(temp.address,"edu.cndev-lab.com"); 
    cout<<temp.name<<"|"<<temp.address<<endl; 

void main() 

    Internet a("中国软件开发实验室","www.cndev-lab.com"); 
    Country b; 
    b.Editurl(a); 
    cin.get(); 
}

  整个类也可以是另一个类的友元,该友元也可以称做为友类。友类的每个成员函数都可以访问另一个类的所有成员。

相关文章:
Symbian 真机http上传下载文件
Python应用于Series 60平台入门——名词和缩写
Symbian OS 错误码
打开HTTP会话时发生异常的处理
C++的iostream标准库介绍(4)
C++的iostream标准库介绍(3)
C++的iostream标准库介绍(2)
C++运算符重载赋值运算符
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号