友元

作者: 安然_fc00 | 来源:发表于2017-04-08 21:05 被阅读0次

1.友元的三种形式

(1).普通的非成员函数被定义为类的友元函数

  • 友元函数的声明可以放在私有部分,也可在公有部分,没区别。
  • 一个函数可以是多个类的友元函数,只需要在各个类中分别声明。
  • 友元函数的调用与一般函数的调用方式和原理一致。

(2).把其他类的成员函数定义成友元

class Student;
class Teacher
{
private:
    Student* pT;
public:
    void assignGrade(Student& s);   
};

void test(Student&s);

class Student
{
private:
    Teacher *pT;
    int someHours;
    double grade;
public:
    friend void Teacher::assignGrade(Student& s);
    friend void test(Student& s);
};

void test(Student&s){
    int i=s.someHours;
}

(3).友元类

class Student;
class Teacher
{
private:
    Student* pList;
public:
    void assignGrade(Student &s); 
    void adjustHours(Student &s);
};
class Student 
{
private: 
    Teacher*pT; 
    int somesterHours; 
    double grade;
public: 
    friend class Teacher;//在学生类种把教师类声明为友元类 
}; 

2.友元的使用场合

  • 运算符重载的某些场合需要使用友元。
  • 两个类要共享数据时。
  • 注意,友元函数破坏了封装机制,尽量不要使用友元函数。

3.友元函数与类成员函数的区别

  • 成员函数有this指针,而友元函数没有this指针。
  • 友元函数是不能被继承的,就像父亲的朋友未必是儿子的朋友。
  • 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
  • 友元关系不具有传递性。

相关文章

  • 第十一章 使用类(2)友元

    (二)友元 1.友元的概念 友元有三种:友元函数,友元类,友元成员函数。这里主要介绍友元函数。通过让函数成为类的...

  • 友元类和嵌套类

    友元类 友元函数用于类的扩展接口中,类并非只能拥有友元函数,也可以将类作为友元,该类称为友元类。 友元类的所有方法...

  • 友元函数/友元类

    引入 当某一类或函数需要访问或使用另一类的私有函数或变量时,引入友元。例如:你的银行卡号是私有的,别人不能访问,但...

  • C++入门10 -- 友元,内部类,运算符重载

    友元 友元包含友元函数和友元类; 若将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所...

  • C++ 友元,内部类,运算符重载

    友元 友元包括友元函数和友元类 如果将函数A(非成员函数)声明为类C的友元函数,那么函数A就能直接访问类C对象的所...

  • 友元(友元函数、友元类和友元成员函数) C++

    原文地址: https://www.cnblogs.com/zhuguanhao/p/6286145.html 有...

  • c++ 友元

    在c++中,通过关键字friend声明为友元。友元可以范围与其有好友关系的类中私有成员。友元包括友元函数和友元类。...

  • 友元

    某些情况下,需要在类的外部直接访问私有和保护成员,以提高效率,避免参数传递、类型检查和安全性造成时间浪费。为此,引...

  • 友元

    ^友元的概念和定义 遵循一定规则而使对象以外的软件系统能够不经过消息传递方式直接使用访问对象内封装数据成员的技术方...

  • 友元

    1.友元的三种形式 (1).普通的非成员函数被定义为类的友元函数 友元函数的声明可以放在私有部分,也可在公有部分,...

网友评论

      本文标题:友元

      本文链接:https://www.haomeiwen.com/subject/ltdkattx.html