作者:纯真的ppx | 来源:互联网 | 2023-08-16 19:05
常见问题派生类,继承常见问题android直播源码,ubuntugui登陆,如何找到别人爬虫,php56.php7.0,seo导出链接lzw先回答大家的问题:派生类的默认继承方式有
常见问题
派生类,继承
常见问题
android 直播 源码,ubuntu gui登陆,如何找到别人爬虫,php56. php7.0,seo导出链接lzw
先回答大家的问题:派生类的默认继承方式有两种。用class定义派生类,默认的继承方式是private,用struct定义派生类,默认的继承方式为public。
傲视天地源码,vscode中如何空行,ubuntu 安装yar,tomcat安装之后配置,手机fidder爬虫,php 匹配img标签,seo优化如何提高用户粘度,iis的网站源码,ssh模板下载lzw
推荐教学:
C++视频教学thinkphp简单商城源码,vscode远程开发bazel,ubuntu系统下载官网,tomcat axis,sqlite 外键约束,网页设计与创意,织梦其他数据库表,临沂服务器租用,wordpress 表单插件,最好的前端开发框架,爬虫免费代理,php上传限制,上海优化seo,springboot网关,meta标签的功能,JAVA下载网站,php网页采集源码,下载你的模板时出错,网站管理后台密码忘记了,快速布局静态页面,mvc物流管理系统源码,小程序分发源码lzw
继承性是面向对象程序设计的第二大特性,它允许在既有类的基础上创建新类,新类可以继承既有类的数据成员和成员函数,可以添加自己特有的数据成员和成员函数,还可以对既有类中的成员函数重新定义。利用类的继承和派生实现了更高层次的代码可重用性,符合现代软件开发的思想。
C++语言同时支持单一继承和多重继承。单一继承是指派生类只从一个基类继承而来;相应的,多重继承指派生类同时从两个或更多的基类继承而来。java只支持单一继承。
一. 派生类
派生类的定义格式如下:
class :[继承方式] [,[继承方式],...,[继承方式]] { };
说明:
(1)定义派生类关键字可以是class或者是struct,两者区别是:用class定义派生类,默认的继承方式是private,用struct定义派生类,默认的继承方式为public。新增加的成员默认属性也是class对应private属性,struct对应public属性。
(2)基类不能被派生类继承的两类函数是构造函数和析构函数。
二. 3种继承方式下基类成员在派生类中的访问属性
继承描述符 | 父public成员 | 父protected成员 | 父private成员 |
public | 子public成员 | 子protected成员 | – |
protected | 子protected成员 | 子protected成员 | – |
private | 子private成员 | 子private成员 | – |
用下面的代码简单理解一下:
#include "stdafx.h"#include using namespace std; class Base { private: int priData; 9 protected: int proData; public: int pubData; };class D1:private Base//私有继承 { void f1() { //priData=1;//基类private成员在派生类中不可直接访问 proData=2;//基类的protected成员在派生类中为private访问属性 pubData=3;//基类的public成员在派生类中为private访问属性 } }; class D2:protected Base//保护继承 { void f2() { //priData=1;//基类private成员在派生类中不可直接访问 proData=2;//基类的protected成员在派生类中为protected访问属性 pubData=3;//基类的public成员在派生类中为protected访问属性 } }; class D3:public Base//公有继承 { void f3() { //priData=1;//基类private成员在派生类中不可直接访问 proData=2;//基类的protected成员在派生类中为protected访问属性 pubData=3;//基类的public成员在派生类中为public访问属性 } }; int main() { Base obj; //obj.priData=1;//对象不可访问Base类中private成员 //obj.proData=2;//对象不可访问Base类中protected成员 obj.pubData=3; D1 objD1; //objD1.pubData=3;//private属性,不可访问 D2 objD2; //objD2.pubData=3;//protected属性,不可访问 D3 objD3; objD3.pubData=3;//public属性,可以访问 return 0;}
基类的private成员函数虽然在派生类的成员函数中不可直接访问,但派生类的成员函数可以通过调用基类被继承的函数来间接访问这些成员。如果基类的函数被继承后在派生类中仍为public成员,则可以通过派生类对象直接调用。
先来看一下类成员的访问属性及作用:
访问属性 | 作用 |
private | 只允许该类的成员函数及友元函数访问,不能被其他函数访问 |
protected | 既允许该类的成员函数及友元函数访问,也允许其派生类的成员函数访问 |
public | 既允许该类的成员函数访问,也允许类外部的其他函数访问 |
好了,继续通过代码来理解:
#include "stdafx.h" #include using namespace std; class Base { private: int priData; protected: int proData; public: int pubData; //在类的定义中不能对数据成员进行初始化 void SetData()//为基类中的数据成员赋值 { priData=100; proData=200; pubData=300; } void Print() { cout<<"priData="<
程序运行结果如下: