C++ protected friend 继承
来源:互联网 发布:java编程思想电子书 编辑:程序博客网 时间:2024/05/22 04:31
protected专门就是为继承(子类)设计的
用public继承 那么基类所有的访问标识在子类不变
protected还是protected
protected只有类本身 和类的子类可以访问,对象是无法访问的! 除了在继承上 他跟private没有任何区别!
private 子类也将不能访问!
只是在继承上不同 其他都一样的private无法继承 也就是说子类也不能用基类的 private…但是protected就是可以的~明白吗? pravite 只对本类生成的对象内部可见,当继承以后,子类是无法访问的,比如基类有一个变量int a,是private,你想这个变量在子类还是存在的话,就需要自己再显式的定义一个private的int a,
但 protected 对本类和继承类可见,即父类定义一个int a 了以后,如果是protected的,那么其自己可以访问,并且继承的子类也会有这个变量,并且子类也是可以访问的
friend关键字,一般放在类的public下,表示用friend修饰的函数或者类,能够访问该类下的除了public以外的protected或者private变量,friend的friend不是friend,除非显式的指定,另外,关于继承后的friend属性,应该是保留的,即派生类中保留父类中的friend(这条没有验证过)。
如果方法是通过引用或者指针而不是对象调用,virtual关键字将确定使用哪种方法(基类或者派生类的方法)。如果没有使用关键字virtual,程序将根据引用类型或指针类型选择方法,如果使用了virtual,程序将根据引用或者指针指向的对象类型来选择方法。
例如,有一个基类Brass和派生类BrassPlus,如果在Brass中有一个非虚函数ViewAcct(),那么在如下调用中:
Brass brass;BrassPlus brassplus;Brass & r1_brass = brass;Brass & r2_brass = brassplus;//将上面的引用换成指针是一样的调用效果,如果ViewAcct方法加上了关//键字virtual,那么下面第二个就是调用BrassPlus::ViewAcctr1_brass .ViewAcct(); //调用Brass::ViewAcctr2_brass .ViewAcct(); //调用Brass::ViewAcct
另外,对于上面的函数,如果在子类方法中要调用基类的方法,比如要调用基类的virtual方法ViewAcct方法,那么应该加上Brass::ViewAcct,用作用域解析运算符来指定,而如果父类有函数balancec,而子类没有,且父类的该函数又没有加上virtual关键字,那么在子类中调用该函数的时候就不需要加上作用域解析运算符
需要注意的是,如果使用基类指针指向子类的对象,那么该指针只能够调用在基类存在的相应的函数或者变量,如果函数前面加上了virtual,那么该指针就指向子类的函数,如果函数没有加,那么就指向基类的该函数,如果要用该指针指向子类自己定义的函数,而不是继承的函数,那么就会报错!即,父类的指针,只能够指向子类的多态实现。但是,子类自定义的函数,可以通过子类继承的函数中来调用
关于派生类中初始化父类的构造函数,如果在子类中的构造函数不显式的调用父类的构造函数,那么子类的构造函数将调用父类的默认构造函数(就是那个不带参数的构造函数),如果父类显式的定义了其他类型的构造函数(比如带参数的构造函数),而在子类中没有显式的调用父类的那个构造函数,那么将会报错,一般情况下,最保险的情况是:
在派生类中成员初始化列表先初始化派生类的私有成员
再显式的调用基类的构造函数
派生类的析构函数是会默认调用父类的析构函数的
- C++ protected friend 继承
- C++:public继承、protected 继承、private继承
- C++:public继承、protected 继承、private继承
- 友元friend和继承(C++)
- C++ friend和protected
- 继承和Protected修饰符(C#)
- C++:类继承 private, protected的区别
- public,private,protected,friend规则
- [C++]friend
- 继承 Objective-C中public、protected、private的使用
- C++中的 public protected private friend关键字
- C++中的 public protected private friend关键字
- 什么时候需要protected继承?
- protected 保护继承
- public、private、protected继承
- public、protected、private继承
- protected继承方式下
- 继承之Protected关键字
- Hibernate中一对多关联映射时,查询某个对象报 java.lang.StackOverflowError错误
- 数据结构实验之排序五:归并求逆序数
- Mybatis最入门---大文本存储
- xml与javabean互转
- Android Studio中获取SHA1值
- C++ protected friend 继承
- linux socke编程实例:一个简单的echo服务器程序
- iOS swift-切换键盘
- Mybatis最入门---多媒体文件存储
- docker中开启sshd
- Android Webview和js交互
- Rxjava+Retrofit 简单使用
- ionic入门教程第十一课-简要说明ion-list、ion-item完成列表页ion-infinite-scroll上拉加载ion-refresher下拉刷新
- GridView中的RowCommand事件中的取值问题