【C++】访问类中的私有成员函数

大家都知道只有类的成员才能访问类的私有数据,但有时在特定的条件下还要由非类的成员来调用类中的私有数据。为了实现这一功能,C++语言提供了友元的机制,通过友元函数就可以解决这样的问题。本实例在非类的成员方法中调用类的私有数据,

友元函数是一种定义在类外部的普通函数,但友元要在类内进行说明,为了与该类的成员加以区别,在说明时加上friend关键字。友元不是成员函数,但友元可以访问类中的私有成员。对于友元函数的使用应该注意不要随意使用,因为友元的机制本身就破坏了类的封装性和隐蔽性。

 1 #include "stdafx.h"
 2 #include "iostream"
 3 #include "string"
 4 using namespace std;
 5 
 6 typedef char String[30];
 7 
 8 class CPerson
 9 {
10 private:
11     String name;                       //姓名
12     int age;                           //年龄
13 public:
14     CPerson(String Name, int Age)       //构造函数/
15     {
16         strcpy(name, Name);
17         age = Age;
18     }
19     friend char * GetName(CPerson&p);    //定义友元函数
20 };
21 
22 char * GetName(CPerson&p)                //获取CPerson类私有信息
23 {
24     return p.name;
25 }
26 
27 int main(int argc,char* argv[])
28 {
29     CPerson p("Jiehong", 23);
30     cout << GetName(p) << endl;
31     return 0;
32 }

 

posted on 2015-12-20 12:01  h3iß3n  阅读(994)  评论(0)    收藏  举报

导航