父类与子类

来源:互联网 发布:不亦说乎的乐的读音 编辑:程序博客网 时间:2024/05/18 01:54

概念解释:

白马和马,则马是父类,白马是子类。子类具有父类的所有属性。比如白马具有和父类一样的马头马尾。因此父类可以被子类赋值,马被赋值之后就成了白马。
子类也能再派生子类,如 白马分为亚洲白马和美洲白马,亚洲白马有可以分为成年亚洲白马和未成年亚洲白马。

父类头文件代码:

#pragma once#include"iostream"using namespace std;class leia //创建父类 leia(为具有面积属性和图形名称属性的父类){public:leia();~leia();double mianji;string name;void fuleihanshu();};

父类cpp源文件代码:

#include "stdafx.h"#include "leia.h"leia::leia(){}leia::~leia(){}void leia::fuleihanshu()//父类函数(用于检测){cout << "fuleihanshu successful" << endl;}

子类头文件代码:

#pragma once#include "leia.h"class leib : //(创建子类 leib  为三角形类,具有abc三边长度的属性)public leia{public:leib();~leib();double abian;double bbian;double cbian;};

上文子类头文件代码中要包含父类的头文件,这样才能在子类(三角类)中使用父类的属性

子类cpp源文件代码:(为了方便 没写函数)

#include "stdafx.h"  #include "leib.h"leib::leib(){}leib::~leib(){}


主函数代码:

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include"iostream"#include"leib.h"#include"leia.h"//此处可以不写,因为子类的头文件里包含了父类头文件。#include"string"using namespace std;int main(){leia tuxing;  //定义父类leib sanjiao; //定义子类sanjiao.fuleihanshu();  //子类中可以调用父类的函数,将在第一行输出“successful”;tuxing.name = "形状";  //让父类的成员name="形状";cout << tuxing.name << endl<<endl;//输出 父类的name。 将在第二行输出“形状”第三第四行输出回车;sanjiao.name = "三角形";  //子类具有父类的属性,所以子类也具有name属性;给子类name 赋值‘三角形’tuxing = sanjiao;  //这里就是白马是马的地方了,三角形是图形,所以 tuxing=sanjiao;而不能反过来。cout << tuxing.name << endl; //tuxing.name 被sanjiao.name 赋值后 变为“三角形”;应输出 “三角形”system("pause");    return 0;}

执行结果:


关于父类与子类指针问题:

依然是白马是马而马不是白马的问题。
假设有父类A,A 中有成员a(int 型);
假设有子类B,B中有成员b(double 型);
A aa;//声明aa;
B bb;//声明 bb;
A *Pa;//声明A类指针;
B *Pb;//声明B类指针;

Pa=&aa;//合法 (父类指针指向父类);
Pa=&bb;//合法 (父类指针指向子类);

Pb=&bb;//合法(子类指针指向子类);
Pb=&aa;//非法(子类指针指向父类);

父类子类代码示例:

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include"iostream"#include"leib.h"//#include"leia.h"#include"string"using namespace std;int main(){leia tuxing;leia *pa;leib sanjiao;leib *pb;pa = &tuxing;//合法  马=马;pa = &sanjiao;//合法  马=白马;pb = &sanjiao;//合法  白马=白马;//pb = &tuxing; //非法;  白马=马;(错误)system("pause");    return 0;}




0 0
原创粉丝点击