码迷,mamicode.com
首页 > 编程语言 > 详细

C++友元(Friend)简单介绍

时间:2014-07-18 12:31:27      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:友元   继承   派生   c++   

相对Java而言,友元是C++中特有的一种元素,再加上《C++ Primer》也并没有太详细的例子,所以刚接触这个概念的时候懵了很久,即是自己总结一下,也希望能帮到大家,下面来讲讲友元的用法和一些注意的地方。


操作:

1)MyFriend类中,将Father类定义成友元

2)写一个Son类继承自Father类

3)在Father类和Son类的构造函数中分别创建MyFriend对象,并定义其内部的三个变量

4)在MyFriend类的构造函数中创建Father对象,并定义其内部的三个变量


结果:

1)Father类中创建的MyFriend对象允许直接访问MyFriend类中所有变量

2)Son类中创建的MyFriend对象只允许直接访问MyFriend类中Public变量

3)由第二点可知,友元关系无法继承

4)MyFriend类中创建的Father对象只允许直接访问Father类中的Public变量

5)由第四点可知,友元关系是单向的,即A为B友元,B并不是A的友元,需要另外单独定义


MyFriend.h

#include "Father.h"

class MyFriend{
    friend class Quote; //友元类直接这样定义就OK了
public:
    MyFriend(){
        Father *p = new Father();
        p->var1 = 1;
        p->var2 = 1;
        p->var3 = 1;
    }
    int var1;
protected:
    int var2;
private:
    int var3;
};

Father.h

#include "MyFriend.h"

class Father{
public:
   Father(){
        MyFriend *p = new MyFriend();
        p->var1 = 1;
        p->var2 = 1;
        p->var3 = 1;
    };
    int var1;
protected:
    int var2;
private:
    int var3;
}

Son.h

#include "MyFriend.h"

class Son : Father{
   Son(){
        MyFriend *p = new MyFriend();
        p->var1 = 1;
        p->var2 = 1;
        p->var3 = 1;
    };
}


C++友元(Friend)简单介绍,布布扣,bubuko.com

C++友元(Friend)简单介绍

标签:友元   继承   派生   c++   

原文地址:http://blog.csdn.net/sfh366958228/article/details/37924351

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!