C++ 友元
2013-11-20 10:09
387 查看
友元会将类的内部暴露给其他类或函数,破坏类的抽象性原则,只在有限情况下使用
一定要定义好函数 和类的位置
友元函数使用实例:
运行结果:
友元类使用:
运行结果:
一定要定义好函数 和类的位置
友元函数使用实例:
#include <iostream> #include <string> using namespace std; //提前声明类 class student; class grade { private : int _grade; public : grade(int grade):_grade(grade){} void display(student &); }; //可以当做一个普通类 class student { public: int _num; string _name; //构造函数和普通函数除了返回值得区别 student(int num,string name):_num(num),_name(name){} //要调用另外一个类中函数 可以申明为友元函数 不过将类对象传递过去 friend void grade::display(student &); }; //友元函数的定义 void grade::display(student &two) { cout<<"student name num grade: "<<two._name<<" "<<two._num<<" "<<this->_grade<<endl; }; int main(){ student stu(100,"buyingfei"); grade gra(100); gra.display(stu); return 0; }
运行结果:
友元类使用:
#include <iostream> #include <string> using namespace std; //可以当做一个普通类 class student { private: int _num; string _name; public: friend class grade; //声明为友元类 则在本类中可以调用声明友元类中成员 //构造函数和普通函数除了返回值得区别 student(int num,string name):_num(num),_name(name){} //传递参数是另外类的引用 声明函数加 ; 不要{} void display(grade &); }; class grade { private : int _grade; public : grade(int grade):_grade(grade){}; int get(){ return this->_grade; } }; //友元函数的定义 void student::display(grade &two) { cout<<"student name num grade: "<<this->_name<<" "<<this->_num<< " "<<two.get()<<endl; }; int main(){ student stu(100,"buyingfei"); grade gra(100); stu.display(gra); return 0; }
运行结果:
相关文章推荐
- C++中的友元
- 从零开始学C++之友元:友元函数和友元类
- C++ 中的友元friend
- C++の友元の例
- C++中的友元
- c++学习札记 友元成员
- 2013级C++第7周(春)项目——深复制、友元、模板 【项目3-成员函数、友元函数和一般函数有区别】
- c++的友元
- C++(5)/友元
- c++中关于友元的知识点
- C++:运算符重载函数之友元运算符重载
- C++ ---- 友元线程函数
- c++第三章 类域、友元、运算符重载
- C++:友元2(时间之差)
- C++语言(六)——友元
- c++友元详解
- C++ - 类模板(class template)友元(friend) 的 全部六种形式 及 代码
- 我的c++学习(8)运算符重载和友元
- C++ - 模板函数需要类型转换时使用友元(friend)模板函数
- c++重载 友元等问题