c++继承赋值兼容】的更多相关文章

其实还是不明白,红色部分,,,求解 #include <iostream>#include <time.h>using namespace std; class B0{public: void display() { cout<<"B0::display()"<<endl; }}; class B1:public B0{public: void display() { cout<<"B1::display()&quo…
作用域与同名隐藏 一样的,先上代码 1 class A 2 { 3 public: 4 int a_data; 5 void a() 6 { 7 cout << "A" << endl; 8 } 9 }; 10 class B 11 { 12 public: 13 int b_data; 14 void b() 15 { 16 cout << "B" << endl; 17 } 18 }; 19 class C :pu…
作用域与重定义(同名隐藏) 一样的,先上代码 1 class A 2 { 3 public: 4 int a_data; 5 void a() 6 { 7 cout << "A" << endl; 8 } 9 }; 10 class B 11 { 12 public: 13 int b_data; 14 void b() 15 { 16 cout << "B" << endl; 17 } 18 }; 19 class…
1.作用域与重定义(同名隐藏) 一样的,先上代码 1 class A 2 { 3 public: 4 int a_data; 5 void a() 6 { 7 cout << "A" << endl; 8 } 9 }; 10 class B 11 { 12 public: 13 int b_data; 14 void b() 15 { 16 cout << "B" << endl; 17 } 18 }; 19 clas…
1.赋值兼容规则 (1)派生类对象能够给基类对象赋值,这样的情况下派生类对象将从基类继承的成员的值赋值给一个基类对象:可是不同意将一个基类的对象赋值给一个派生类. (2)能够将派生类对象的地址赋给基类指针,使基类指针指向派生类对象,通过基类指针引用成员时仅仅能够引用派生类从基类继承而来的成员,而不同意引用派生类的新成员. (3)引用与指针同样. 2.多继承 (1)一个派生类从两个以上的基类中去继承. (2)说明: class 派生类名:继承方式 基类1, 继承方式 基类2,...... {派生类…
赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代.通过公有继承,派生类得到了基类中除构造函数.析构函数之外的所有成员,而且所有成员的访问控制属性也和基类完全相同.这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决.赋值兼容规则中所指的替代包括以下的情况: 1>派生类的对象可以赋值给基类对象. 2>派生类的对象可以初始化基类的引用. 3>派生类对象的地址可以赋给指向基类的指针. 在替代之后,派生类对象就可以作为基类的对象使用,但只…
4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量.这种不同类型之间的自动转换,称为赋值兼容.在基类和派生类对象之间也存在有赋值兼容关系,基类和派生类对象之间的赋值兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来代替.因为,通过公有继承,除了构造函数和析构函数外,派生类保留了基类其他的所有的成员.那么,派生类就具有基类的全部功能,凡…
一.同名隐藏 同名隐藏,即在C++的继承中,只要子类的函数名和父类的函数名相同,子类中的函数将会隐藏所有父类中和子类的成员函数同名的函数 特别注意: 和函数之间的重载不同,这里只要求函数的名字相同,而对函数的参数列表是否相同不做要求.话句话说父类中和子类的成员函数名相同但参数列表不同的成员函数也会被隐藏 示例: #include<iostream> using namespace std; class Father{ //父类 public: Father()=default; Father(…
赋值兼容的规则时在需要使用基类对象的任何地方都可以使用公有派生类对象来替代.公有继承派生类可获得基类中除构造函数,析构函数外的所有成员,能用基类解决的问题,派生类也能解决.更直白点说,如果一个类是从一个基类公有继承过来,那么这个派生类就可以替代基类,反过来基类不能替代派生类. 常用赋值兼容情况: 1.派生类对象赋值给基类对象. 2.派生类对象初始化基类对象引用. 3.派生类对象地址赋值给指向基类对象指针. #include <iostream> using namespace std; cla…
同名隐藏 一旦子类定义了与父类同名的方法,则父类里面该名字的所有方法都被隐藏了.必须显示指定是父类的方法才可以 #include<iostream> using namespace std; class Base { public: Base() :x() {} ~Base() {} void show() { cout << "This is Base show" << endl; } void show(int n) { cout <<…
C++赋值兼容原则(派生类对象是基类对象,反之不成立) –基类指针强制转换成派生类指针 –派生类中重定义基类成员(同名覆盖) 假设, 一个基类 "普通人", 一个派生类 "超人". 1) 赋值兼容原则(派生类对象是基类对象,反之不成立) 超人是人吧, 但不是每个人都是超人.现在我要找一个普通人来干活.Man* p = new Man; // OK, p指向了一个普通人对象.Man* p = new SuperMan; // 也OK, 虽然有些大才小用, 但是超人确实…
–赋值兼容原则(派生类对象是基类对象,反之不成立)–基类指针强制转换成派生类指针–派生类中重定义基类成员(同名覆盖) 假设, 一个基类 "普通人", 一个派生类 "超人". 1) 赋值兼容原则(派生类对象是基类对象,反之不成立) 超人是人吧, 但不是每个人都是超人.现在我要找一个普通人来干活. Man* p = new Man; // OK, p指向了一个普通人对象. Man* p = new SuperMan; // 也OK, 虽然有些大才小用, 但是超人确实可以…
编程处理教师的基本情况. 要求: 1.定义一个"person"类.用来存储及处理人的姓名.性别.年龄,成员函数自定: 2.定义"teacher"类,公有继承"person"类用来存储教师所在学院.所学专业.学历.学位.职称.教龄等,成员函数自定. 3.处理程序,主要包含: ⑴显示姓名.性别.年龄函数:既能显示person对象的姓名.性别.年龄,又能显示teacher对象的姓名.性别.年龄(用person引用对象为形參): ⑵显示教师所在学院.所学…
#include <iostream.h> class A { public: void f1() { cout << "a" << endl; } virtual void f2() { cout << "b" << endl; } }; class B : public A { public: void f1() { cout << "c" << endl;…
function create(obj) { // 2.1 判断浏览器支持不支持 Object.create // 如果支持,直接使用 Object.create // 如果不支持,自己实现 if(Object.create) { return Object.create(obj); } else { function F() {} F.prototype = obj; return new F(); } }…
在这一篇文章開始之前.我先解决一个问题. 在上一篇C++继承详解之中的一个--初探继承中,我提到了在派生类中能够定义一个与基类成员函数同名的函数,这样派生类中的函数就会覆盖掉基类的成员函数. 在谭浩强的C++程序设计这本书第十一章.351页最以下有这么一段话: 可在派生类中声明一个与基类成员同名的成员函数,则派生类中的新函数会覆盖基类的同名成员,但应注意:假设是成员函数,不仅应是函数名同样,并且函数的參数表(參数的个数和类型)也应同样,假设不同样,就会成为函数重载而不是覆盖了.用这个方案能够用新…
继承 访问控制 基类的成员函数可以有public.protected.private三种访问属性. 类的继承方式有public.protected.private三种. 公有继承 当类的继承方式为public时,基类的public成员和protected成员的访问属性在派生类中不变,而基类的private成员无法直接访问. 私有继承 当类的继承方式为private时,基类的public成员和protected成员都以私有成员的身份出现在派生类中,而基类的private成员无法直接访问. 保护继承…
一.继承的相关基本概念 1.继承的定义     在C++中,可以使用继承来使新类得到已定义的一些类中的特性,这就好比与孩子从父亲母亲得到遗传类似,所以我们称原有的类为基类或父类,用原有类来生成新的类的过程称为派生,所以生成的新类称之为派生类或者子类. 2. 继承的声明      在继承中和上面所说的遗传是有区别的,孩子只能遗传其父母的一些基因,而在C++的继承中,一个新的类是可以继承多个不同的类,被称为多重继承.所以继承分为单继承和多继承.      继承的定义格式如下:           …
继承和派生 继承是面向对象编程语言的最重要方面之一,正确的使用继承可编写出设计良好,容易于维护和扩展的应用程序.下面是在其他博客中的总结: ******************************以下转载 http://blog.csdn.net/caijp1090/article/details/7484906****************** 1.继承:保持已有类的特性而构造新类的过程:派生:在已有类的基础上新增自己的特性而产生新类的过程. 2.访问控制 a.公有继承public:基类…
例6.1 使用默认内联函数实现单一继承. #include<iostream> using namespace std; class Point { private: int x, y; public: Point(int a, int b) { x = a; y = b; cout << "Point..." << endl; } void Showxy() { cout << "x=" << x <…
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 1    拓展部分 本节主要由两部分内容组成,分别是(1)基类与派生类的转换和(2)继承与组合 1.1    基类与派生类的转换 在前几篇博客中,可以看到在3种继承方式中,只有公有继承能较好的保留基类的特征,它保留了除构造函数和析构函数以外所有的基类成员,基类的公有或保护成员的访问权限在派生类中全部保留了下来,在派生类外可以调用基类的公有成员函数以访问基类…
四,派生类的六个默认成员函数 在继承关系里,如果我们没有显示的定义这六个成员函数,则编译系统会在适合场合为我们自动合成. 继承关系中构造函数和析构函数的调用顺序: class B { public: B() { cout<<"B()"<<endl; } ~B() { cout<<"~B()"<<endl; } }; class D:public B { public: D() { cout<<"D…
继承 通过特殊化已有的类来建立新类的过程,叫做“类的派生”,原来的类叫做“基类”,新建立的类则叫做“派生类”.另一方面,从类的成员角度看,派生类自动地将基类的所有成员作为自己的成员,这叫做“继承”.基类和派生类又可以分别叫做“父类”和“子类”,有时也称为“一般类”和“特殊类”. 当从现有的类中派生出新类时,派生类可以有以下几种变化: (1)增加新的成员(数据成员或成员函数) (2)重新定义已有的成员函数 (3)改变基类成员的访问权限 C++派生类使用两种基本的面向对象技术:第一种称为性质约束,即…
在区分隐藏和重写之前,先来理一理关于继承的东西... [继承] 继承是面向对象复用的重要手段.通过继承定义一个类,继承是类型之间的关系建模,共享公有的东西,实现各自本质不同的东西.简单的说,继承就是指一个对象直接使用另一对象的属性和方法.C++中的继承关系就好比现实生活中的父子关系,继承一套房子通常比白手起家自己挣要容易得多.所以原始类被称为父类或基类,继承类称为子类或派生类,而子类又可以当成父类,可再被其它类继承.这种关系和java是一样道理,不过C++多了一个麻烦的地方就是它还支持多继承,于…
继承(inheritance)是软件重用的一种方式,程序员通过继承可以吸收已有类的数据和行为来创建新类,并可以添加新的数据和行为来增强类的功能.创建新类时,并不需要创建全新的数据和成员函数,我们可以指明这个新类应当继承现有类的成员.此时,现有的类称为“基类”,继承实现的新类称为“派生类”.派生类代表了一组更加特殊化的对象,它包含了从基类继承来的行为,并进行了扩充. 介绍: 类是对现实中事物的抽象,类的继承和派生的层次结构则是对自然界中事物分类.分析的过程在程序设计中的体现.下图说明了某个公司雇员…
原文地址:https://qunxinghu.github.io/2016/09/12/C++%20%E4%B8%89%E5%A4%A7%E7%89%B9%E6%80%A7%E4%B9%8B%E7%BB%A7%E6%89%BF/ 基本概念 继承 : 类的继承,就是新的类从已有类那里得到已有的特性.原有的类称为基类或父类,产生的新类称为派生类或子类. 基本语法 派生类的声明: class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n { 派生类成员声明: }; 在…
在区分隐藏和重写之前,先来理一理关于继承的东西... [继承] 继承是面向对象复用的重要手段,是类型之间的关系建模.通过继承一个类,共享公有的东西,实现各自本质不同的东西.简单的说,继承就是指一个对象直接使用另一对象的属性和方法.C++中的继承关系就好比现实生活中的父子关系,继承一套房子通常比白手起家自己挣要容易得多.所以原始类被称为父类或基类,继承类称为子类或派生类,而子类又可以当成父类,可再被其它类继承.这种关系和java是一样道理,不过C++多了一个麻烦的地方就是它还支持多继承,于是就引发…
(1)继承是创建一个具有某个类的属性和行为的新类的能力.原有的类称为基类,新创建的类称为派生类.派生类将基类中的所有成员作为自己的成员,同时派生类本身可以定义新的成员(2)派生类只有一个基类的继承称单重继承,简称单继承.派生类具有两个或两个以上的基类的继承称为多重继承,简称多继承.C++语言支持单继承,又支多继承(3)派生类有3种继承方式:公有继承( public).私有继承( private)和保护继承( protected).不同的继承方法中,基类成员在派生类中的访问权限是不同的.3种继承方…
继承机制是面向对象程序设计使代码能够复用的最重要的手段,它同意程序猿在保持原有类特性的基础上进行扩展,添加功能. 这样产生新的类,称派生类.继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程. #include<iostream> using namespace std; class Base { public: Base() {} ~Base() {} private: int _pri; protected: int _pro; public: int _pub; };…
说明:在C++学习的过程中,虚继承-虚函数经常是初学者容易产生误解的两个概念,它们与C++中多态形成的关系,也是很多初学者经常产生困惑的地方,这篇文章将依次分别对三者进行解析,并讲述其之间的联系与不同. 一.虚继承 1.在多继承中,对于多个父类的数据及函数成员,虽然有时候把他们全部继承下来是有必要的,比如当这些成员都不同的时候.但在大多数的情况下,比如当多个父类之中的成员有重叠的地方时,因为保留多份数据成员的拷贝,不仅占有了较多的存储空间,还增加了访问的难度(由于继承了来自多个父类的同名数据成员…