读几个小程序了解c++:Part 02(友元、常类型)
2018-02-28 20:29
531 查看
#include <cstring> #include <iostream> using namespace std; /* 类的主要特点是信息隐藏与封装,友元函数是为了实现在类的外部访 问类的私人成员(或保护成员),是一扇通向私人(保护)成员的后 门,使得普通函数也可以访问封装在某一类的信息。 */ class Girl; ///提前声明Girl类 class Boy{ public: Boy(string x, int y, int z):age(z){ name=x, id=y; } void prit(Girl &); friend void outp(Boy &); ///Boy的友元函数,是外部函数 void prit_age(); ~Boy(){} private: string name; int id; const int age; ///常类型:程序运行期间的常类型数据不能改变 }; class Girl{///补充定义Girl类 public: Girl(string x, int y){ name=x, id=y; } friend void Boy::prit(Girl &); ///Girl的友元函数,同时是Boy的成员函数 ~Girl(){} private: string name; int id; }; void outp(Boy &x){ ///外部函数:不属于任何一个类 Girl g1("Suffy", 456); cout<<"The boy's id:"<<x.id<<endl; //通过外部函数调用Boy类 cout<<"The boy's name:"<<x.name<<endl<<"Over02\n\n"; x.prit(g1); //通过外部函数调用Boy类中Girl的友元函数来调用Girl的私人成员 } void Boy::prit(Girl &x){ cout<<"Boy's id: "<<id<<endl; cout<<"Boy's name: "<<name<<endl; cout<<"Girl's id: "<<x.id<<endl; cout<<"Girl's name: "<<x.name<<endl<<"Over01\n"<<endl; } void Boy::prit_age(){ cout<<name<<"'s age is: "<<age<<endl; } void fuction01(){ ///友元 Boy b1("Moffy", 123, 18); Girl g1("Vicky", 321); b1.prit(g1); outp(b1); } void fuction02(){ ///常类型 Boy b1("Lucky", 234, 18); b1.prit_age(); } int main(){ ///fuction01(); fuction02(); return 0; }
相关文章推荐
- 读几个小程序了解c++:Part 03(派生类和继承)
- 读几个小程序了解c++:Part 01(构造函数、析构函数、指针、静态数据成员)
- C++ - 模板函数须要类型转换时使用友元(friend)模板函数
- 走进C++程序世界-------强制数据类型转换(static_cast、dynamic_cast、reinterpret_cast、const_cast)
- 指定几个目录,有选择的对C/C++/JAVA等类型的代码,进行grep查找字符串的脚本
- 一个由C/C++编译的程序占用的内存分几个部分
- C++ 关于友元的一些程序
- C02-程序设计基础提高班(C++)第8周上机任务-结构体
- 有关C++继承与友元、继承与类型转换详解
- C# 与 C++强强联合 ,深入C#内存管理来分析 值类型、引用类型、装箱、拆箱、堆栈几个概念组合
- EXC-BAD-ACCESS当程序崩溃时,我们怎么做?part-02
- C++实现聊天程序(QQ类型)
- Android的jni的调用C,C++的几个应用(基本类型,数组,类(结构体))文档-源码
- C02-程序设计基础提高班(C++)第6周上机任务-数组
- C/C++学习之C提高----C程序数组排序、数据类型(大小,别名,封装)、变量、程序的内存四区模型(栈,堆,全局,代码区)
- C02-程序设计基础提高班(C++)第8周上机任务-结构体
- C/C++ 程序调试的几个小技巧
- Android的jni的调用C,C++的几个应用(基本类型,数组,类(结构体))
- C++基础<02>—变量和基本类型
- 浅谈C++ 类型转换以及其在友元方面的应用