C++ 学习(派生类到基类准还的可访问性)
来源:互联网 发布:python 改变路径 编辑:程序博客网 时间:2024/06/05 16:28
- 当派生类是以公有方式继承时,用户代码才能使用派生类向基类的转换,否则用户代码不可完成转换
- 无论派生类是以哪种方式继承,派生类的成员函数和友元函数都可以完成派生类向基类的转换。
- 设派生类是D, 基类是B, 当以protected方式继承时,D的派生类的成员函数和友元可以完成派生类向基类的转换, 但是如果D继承B 的方式是private则不可以。
代码写得有点恶心
#include <iostream>#include <string.h>#include <algorithm>#include <stdlib.h>#include <stdio.h>using namespace std;void func();class A{ public: int a; void get(){ cout<<"A "<<": "<<a<<endl; }};class B : public A{ public: int b; void getB(){ cout<<"b : "<< b<<endl; } void getA(A &a){ cout<<"getA :"<<a.a<<endl; }};class C: protected A{ public : int c; void getC(){ cout<<" c "<<c<<endl; } void inputA(int n){ a = n; } void getA( C & cc){ A aa = (C) cc; cout<<"getA :" <<aa.a<<endl; } friend void func(C c);};class D: private A{ public: int d; void getD(){ cout<<"D "<<d<<endl; } void getA(D &d){ A aa = (A) d; cout<<"getA :" <<aa.a<<endl; } void setA(int b){ a = b; } friend void func(D d);};void func(D d){ A aa = (A) d; cout<<"friend "<<aa.a<<endl;}void func(C c){ A aa = (A) c; cout<<"friend "<<aa.a<<endl;}void get(A &a){ a.get();}class E : protected B{};int main(){ B b; A a; C c; D d; a.a = 1; b.a = 2; c.c = 3; c.inputA(3); d.setA(4); //D d; //get(c); // d.getA(d); func(d);}
0 0
- C++ 学习(派生类到基类准还的可访问性)
- 派生类到基类转换的可访问性
- 派生类到基类转换的可访问性
- 《C++ Primer》派生类到基类转换的可访问性
- 派生类转换到基类的可访问性
- c++ 初学 派生类到基类转换的可访问性
- C++ 派生类到基类转换的可访问性
- 派生类向基类转换的可访问性
- 派生类向基类转换的可访问性
- 派生类到基类转换到可访问性
- [c++]派生类的访问控制
- 派生类到基类转换的可访问性——新解
- 派生类向基类类型转换的可访问性
- C++ 派生类到基类转换的可访问性(是否可以转换)
- c++派生类向基类转换的可访问性
- [C#] 成员的可访问性
- C++笔记:派生类到基类转换到可访问性
- .net4.0的透明规则(派生类型必须与基类型的安全可访问性匹配或者比基类型的安全可访问性低) .
- Activity与Fragment通信方式
- Win7上Git安装及配置过程
- Git安装配置
- Runtime类中的freeMemory,totalMemory,maxMemory区别
- iOS汉字转成拼音
- C++ 学习(派生类到基类准还的可访问性)
- Pod 出错 xcrun: error: active developer path
- 一句话彻底明白java乱码问题
- 在字符串中找出连续最长的数字串
- 数据挖掘day4——主成分分析
- vector利用swap()函数进行内存的释放 和capacity()、size()、clear()、reserve()函数
- Android手机端将logcat过滤并保存到文件里的方法
- maven+springMVC+mybatis+junit详细搭建过程
- 三级listview的实现