`
897371388
  • 浏览: 531779 次
文章分类
社区版块
存档分类
最新评论

C++之类继承

 
阅读更多

主要探索:

1 派生类对基类protecteed public private三种数据访问 和这三种继承方式比较。

2 派生类包含子对象。

3 子类包含构造函数。


通过public方式继承:

具体示例:

#include <iostream>
#include <string>

using namespace std;

//定义基类
class people
{
	//子类私有对象只能在本类访问,与继承方式无关
private:
	string _name;
	//采用protected 就表明将要采用继承
protected:
	int _age;
public:
	//子类构造函数
	people(string name,int age):_name(name),_age(age){}
    //用来输出数据成员
	void display(){
	cout<<"name  :"<<this->_name<<endl
		<<"age   :"<<this->_age<<endl;
	}
};

//定义派生类
//通过public方式继承基类
class student:public people
{
private:
	int _num;
	people peo; //定义子对象
public:
	//定义派生类构造函数 如果子对象 或者基类含有构造函数 必须进行赋值 
	student(int num,string name,int age,string objName,int objNum):_num(num),people(name,age),peo(objName,objNum){}

	void show(){
	cout<<"num  :"<<this->_num<<endl;
    display(); //直接调用基类函数
	peo.display(); //通过对象调用 基类函数  可以直接调用基类protected成员
	cout<<"调用基类protected成员age  :"<<_age<<endl;
	}
};
int main(){
	student stu(100,"buyingfei",22,"objname",23);
	stu.show();
	stu.display(); //可以通过对象直接调用基类public成员
	return 0;
}

运行结果:




通过protected方式继承:

#include <iostream>
#include <string>

using namespace std;

//定义基类
class people
{
	//子类私有对象只能在本类访问,与继承方式无关
private:
	string _name;
	//采用protected 就表明将要采用继承
protected:
	int _age;
public:
	//子类构造函数
	people(string name,int age):_name(name),_age(age){}
    //用来输出数据成员
	void display(){
	cout<<"name  :"<<this->_name<<endl
		<<"age   :"<<this->_age<<endl;
	}
};

//定义派生类
//通过public方式继承基类
class student:protected people
{
private:
	int _num;
	people peo; //定义子对象
public:
	//定义派生类构造函数 如果子对象 或者基类含有构造函数 必须进行赋值 
	student(int num,string name,int age,string objName,int objNum):_num(num),people(name,age),peo(objName,objNum){}

	void show(){
	cout<<"num  :"<<this->_num<<endl;
    display(); //直接调用基类函数
	peo.display(); //通过对象调用 基类函数  可以直接调用基类protected成员
	cout<<"调用基类protected成员age  :"<<_age<<endl;
	}
};
int main(){
	student stu(100,"buyingfei",22,"objname",23);
	stu.show();
//	stu.display();  通过protected方式不能再类外访问基类成员
	return 0;
}

运行结果:



通过private方式:

#include <iostream>
#include <string>

using namespace std;

//定义基类
class people
{
	//子类私有对象只能在本类访问,与继承方式无关
private:
	string _name;
	//采用protected 就表明将要采用继承
protected:
	int _age;
public:
	//子类构造函数
	people(string name,int age):_name(name),_age(age){}
    //用来输出数据成员
	void display(){
	cout<<"name  :"<<this->_name<<endl
		<<"age   :"<<this->_age<<endl;
	}
};

//定义派生类
//通过public方式继承基类
class student:private people
{
private:
	int _num;
	people peo; //定义子对象
public:
	//声明派生类构造函数
	student(int num,string name,int age,string objName,int objNum);

	void show(){
	cout<<"num  :"<<this->_num<<endl;
    display(); //直接调用基类函数
	peo.display(); //通过对象调用 基类函数  可以直接调用基类protected成员
	cout<<"调用基类protected成员age  :"<<_age<<endl;
	}
};

//定义派生类构造函数
student::student(int num,string name,int age,string objName,int objNum):_num(num),people(name,age),peo(objName,objNum){}
int main(){
	student stu(100,"buyingfei",22,"objname",23);
	stu.show();
//	stu.display();  通过protected方式不能再类外访问基类成员
	return 0;
}

运行结果:


分享到:
评论

相关推荐

    c++课件之继承-派生类

    介绍c++中的继承-派生类,适合C++初学者。

    C++语言中类、继承、多态等的用法?

    继承是面向对象设计的基本特征之一,是从已有的类基础上建立新类。通过C++语言中的继承机制,一个新类既可以共享另一个类的操作和数据,也可以在新类中定义已有类中没有的成员。 class CBase { public: void FuncA...

    C++ 类的继承与派生实例详解

    继承性是面向对象程序设计最重要的特性之一,使软件有了可重用性,C++提供的类的继承机制。 继承与派生的概念 一个新类从已有的类那里获得已有的特性,这种现象称为类的继承。同样也可以说成已有的类派生出来了新的...

    关于C++中菱形继承和虚继承的问题总结

    菱形继承是多重继承中跑不掉的,Java拿掉了多重继承,辅之以接口。C++中虽然没有明确说明接口这种东西,但是只有纯虚函数的类可以看作Java中的接口。在多重继承中建议使用“接口”,来避免多重继承中可能出现的各种...

    C++类继承之子类调用父类的构造函数的实例详解

    主要介绍了C++类继承之子类调用父类的构造函数的实例详解的相关资料,希望通过本文大家能够掌握C++类继承的相关知识,需要的朋友可以参考下

    C++给出一个哺乳动物类,要求从此派生出一个狗类

    C++中类与继承的知识,给出一个哺乳动物类,要求从此派生出一个狗类狗属哺乳动物,且它的属性有品种之分(在哺乳类基础上增加品种数据成员),叫声区别于其他动物(即Speak()实现为虚函数,输出“Woof!”),还会摇...

    C++程序五子棋游戏.rar

    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于...

    鸡啄米:C++编程入门系列

    鸡啄米:C++编程入门系列之三十六(继承与派生:派生类从基类继承 的过程) 鸡啄米:C++编程入门系列之三十七(继承与派生:派生类对基类成员 的访问控制之公有继承) 鸡啄米:C++编程入门系列之三十八(继承与...

    分析c++源代码中类的关系

    可以分析源代码中各个类之间的关系 是基类或之类 继承关系

    C++之父大作 - The.Design.And.Evolution.Of.C++(中文版)

    内容涵盖C++的史前时代、带类的C、C++的设计规则、标准化、库、内存管理、多重继承、模板等,对包括异常机制、运行时类型信息和名字空间在内的重要的新特性都分别进行了深入探讨。每一名C++程序员都应该可以从Bjarne...

    一些小C++程序,比如排序,继承,回文数之类的

    帮助初学者学C++,里面的程序有排序,分数相加,求阶乘,字符串反向,角谷猜想等等

    C++虚继承之类的实际大小

    这几天翻箱底将去年买的《深度探索C++对象模型》这本NB的书拿出来看看,The Semantics of Data这一章中发现了一个过去一直没有想到的一个问题,问题如下  输出下面class的大小: class X{}; class Y : public ...

    现代C++程序设计

    7.2.3 揭开类的生命之谜 7.2.4 set和get函数的作用与VolumeCalc类 7.2.5 PICalculator类 7.3 作为类成员的对象 7.4 类的析构函数 7.5 对象数组 7.6 重载运算符与对象 7.7 指针、引用和类 7.7.1 指针和引用实例 ...

    Effective C++ 中文版

    世界顶级C++大师Scott Meyers成名之作的第三版的确当得起这样的评价。当您读过《Effective C++中文版(第3版改善程序与设计的55个具体做法)》后,就获得了迅速提升自己C++功力的一个契机。  在国际上,本书所引起的...

    C++ Primer第四版【中文高清扫描版】.pdf

    17.3.3 多重继承派生类的复制控制 619 17.3.4 多重继承下的类作用域 620 17.3.5 虚继承 622 17.3.6 虚基类的声明 624 17.3.7 特殊的初始化语义 625 小结 628 术语 628 第18章 特殊工具与技术 631 18.1 优化内存分配...

    C++之继承和动态内存分配

    如果基类使用动态内存分配,并重新定义赋值和复制构造函数,这将如何影响派生类的实现呢?这取决于派生类的属性,如果派生类也使用动态内存分配,这将如何实现呢?这种大致分为两种情况,  第一种情况:派生类不...

    Effective C++

    每一个条款的背后都有具体范例支持,书中讲的都是C++的编程技巧和注意事项,很多都是自己平时不太注意但又很重要的内容,绝对经典,作者Scott Meyers是全世界最知名的C++软件开发专家之一。 电子书PDF格式下载:...

    exceptional c++:47个c++工程难题、编程问题和解决方案(英文版)

    本书列出的条款涵盖了许多方面的主题,尤其对异常安全性、类和模块的合理设计,正确的代码优化,以及编写符合c++标准的可移植代码进行了深入的讨论。  《exceptional c++:47个c++工程难题、编程问题和解决方案...

    C++复习资料之系列

    在一个C++程序中,main函数的位置( c )。 (a) 必须在程序的开头 (b) 必须在程序的后面 ( c ) 可以在程序的任何地方 (d) 必须在其它函数中间 2.用C++语言编制的源程序要变为目标程序必须要经过( d )。 (a) ...

Global site tag (gtag.js) - Google Analytics