首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

派生

1.什么是?   在面向对象设计中,被定义为包含所有实体共性的class类型,被称为“”。-百度百科   简单理解,即父(相对派生) 2.什么是派生?   ...利用继承机制,新的可以从已有的派生。那些用于派生称为这些特别派生出的的“”。   简单理解,即子类(相对) 3.两者关联   派生是一个相对的关系。...派生反映了的继承关系,是相对而言的。又称父,是被派生继承的派生又称子类,是从一个已有的基础上创建的新,新包含的所有成员,并且还添加了自己的成员。...4.实际例子   假设有两个A和B,A和B都需要实现一个打印的功能,原始的做法是A写一个打印函数,B也写一个打印函数。两个还好可以写,但多了就特别麻烦。...这个时候我们就可以写一个C,C里面写一个打印函数。A和B分别继承C,这样A和B就不要写打印函数了。这样即节省了代码,又优化了结构。 上面的情况,C是A和B的,A和B是C的派生

95440

【C++】 ( 简介 | 声明 | 单向性 | 继承性 | 作用 | 函数由来 | Java 反射机制 | C C++ 编译过程 )

一、简介 1、引入 在 C++ 语言中 , " " 是 一个 与 另外一个 的 特殊关系累 , 在 A 的 " " B 中 , 可以直接访问 A 的 私有成员...和 受保护成员 ; B 是 A 的好朋友 , B 可以访问 A 的所有成员 ; 2、声明 声明一个 B 是 另一个 A 的 , 可以 在 A 中使用 friend 关键字来声明 ;...friend class StudentCaculate; } 3、单向性 单向性 : 关系是单向的 , 声明一个 B 是 另一个 A 的 , B 可以访问 A 的 所有成员..., 但是 A 不是 B 的 , A 不能访问 B 的私有和保护成员 ; 4、继承性 关系不具有继承性 , 即 子类不能直接继承父 ; 5、作用 主要作用 :...作为 某个的 数据操作 辅助 ; 作为 多个 之间 传递信息 的 辅助 ; 二、函数由来 1、函数引入 函数 会破坏 C++ 面向对象 的封装性 , 那么为什么还会出现该机制呢

1.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    所有的方法都可以访问原始的私有成员和保护成员 声明 friend class ClassName 声明可以位于公有、私有或保护部分,其所在的位置无关紧要。...由于Remote提到了Tv, 所以编译器必须了解Tv后才能处理Remote,为些最简单的方法是首先定义Tv。..._r.volup(_t,2); _r.ShowTv(_t); cin.get(); }  上边的例子中代码真正访问Tv成员的是Remote方法是volup,其它的方法不是真需要作为的...因此它是唯一需要作为的方法 确实可以选择仅让特定的成员成为另一个,需不必须让整个成为,但这样稍微有点麻烦,必须小心排列各种声明和定义的顺序。...让Remote::volup()成为Tv的方法,在Tv声明中将其声明为 class {   friend void Remote::set_chan(Tv & t,int c); };

    58170

    c++-派生

    浏览量 1 函数必须在中进行声明而在外定义,声明时须在函数返回类型前面加上关键字friend。函数虽不是的成员函数,但它可以访问中的私有和保护类型数据成员。...覆盖的特征有: 不同的范围(分别位于派生);2) 函数名字相同;3) 参数相同;4) 函数必须有virtual关键字。...隐藏是指派生的函数屏蔽了与其同名的函数,规则如下: 如果派生的函数与的函数同名,但是参数不同。此时,不论有无virtual关键字,的函数将被隐藏(注意别与重载混淆)。...2) 如果派生的函数与的函数同名,并且参数也相同,但是函数没有virtual关键字。此时,的函数被隐藏(注意别与覆盖混淆)。...(int a,int b) { printf("%s","roseB"); } }; int main() { A *a = new B();//输出AB B *b = new B();//

    38820

    派生多态虚函数?

    通常在层次关系的根部有一个,其他则直接或间接的从继承而来,这些继承得到的称为派生负责定义在层次关系中所有共同拥有的成员,而每个派生定义各自特有的成员。...成员函数与继承派生可以继承其的成员, 然而有时候派生必须对其重新定义。派生需要对这些操作提供自己的新定义以覆盖从继承而来的旧定义。...派生可以继承定义在中的成员,但是派生的成员函数不一定有权访问从继承而来的成员。 和其他使用的代码一样,派生能访问公有成员,而不能访问私有成员。...现在,我们只需知道访问说明符的作用是控制派生继承而来的成员是否对派生的用户可见。 如果一个派生是公有的,则的公有成员也是派生接口的组成部分。..."son" 的对象 //base s; //new base; /*base* b = new son; b->func();*/ } int main() { //test01();

    18920

    C++_函数与

    1.知识点介绍 的特性之一就是封装,而就是C++为用户提供打破这种封装的手段,分为函数和对象 2.函数 1、函数,他只是一个函数,函数不是的成员,通过对象是无法访问的...2、函数,无论声明在中的任访问属性下都可以,不影响他的调用和访问 !!!...函数无论在外定义, 还是在内定义都不属于 用例: #include using namespace std; class CA { int num; // 私有数据成员 void...fun(); // 私有函数成员 friend void FFun(CA& a); // 外定义函数 friend void FFun1(CA& a) // 中定义函数 {...是一个单独的,只不过和函数一样,在中声明了一个,在这个中同样也 可以访问该类中的所有成员,在A中声明B为A,那么在B中就可以访问A中的所有成员 // 示例

    52820

    C++函数和

    在 C++ 中,一个中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。...现在,我们来介绍一种例外情况——(friend)。 借助(friend),可以使得其他中的成员函数以及全局范围内的函数访问当前的 private 成员。...在 C++ 中,这种友好关系可以用 friend 关键字指明,中文多译为“”,借助可以访问与其有好友关系的中的私有成员。...如果你对“”这个名词不习惯,可以按原文 friend 理解为朋友。 函数 在当前以外定义的、不属于当前的函数也可以在中声明,但要在前面加 friend 关键字,这样就构成了函数。...函数可以是不属于任何的非成员函数,也可以是其他的成员函数。 函数可以访问当前中的所有成员,包括 public、protected、private 属性的。

    18350

    C++函数与

    函数是一个可以访问的私有成员的函数,并且它不属于这个则是可以访问另一个的私有成员的。...声明函数/,则需要这样做: 比如,我们需要生命ClassTwo是ClassOne的,那么我们要在ClassOne中加入这么一行语句: friend class ClassTwo; 相应的...这就是说,如果函数B要成为A的函数,那么必须在A中声明B是函数。 并且,朋友关系不具有对称性。假设有两个A、B,B是A的,但是并不意味着A是B的。...(除非在B中声明A是它的) 朋友关系不具有传递性。B是A的,C是B的,那么并不意味着C一定是A的。...int x; }; //setX可以修改Count中的私有成员的值,因为在第六行已经把它定义为Count的函数 void setX(Count& c, int val) { c.x = val

    31720

    c++继承 派生 虚函数

    参考链接: C++继承 继承    的关系有组合、继承和代理。继承的本质就是代码复用。子类继承父中的一些东西,父也称为,子类也称为派生派生继承了除构造函数以外的所有成员。 ...中不同访问限定符下(public、protected、private)的成员以不同的继承方式继承,在派生中的访问限定也不同,具体如下:  的布局优先于派生  #include<iostream...Derive的布局如下:  由图可见,的布局优先级高于派生。...1.调用的构造函数 2.调用派生的构造函数 派生的析构可想而知: 1.调用派生的析构函数 2.调用的析构函数  虚函数  如下程序:  class Base { public:     Base...此时派生的布局如下:     vfptr的指针大小为4(32位机器)。因此字节数为8,派生为12。

    1.1K20

    C++:11---函数、

    一、(friend) 概念:通过,打破了的封装性,可以访问内的所有成员 分类:函数、 二、函数 概念:函数是一个普通函数,不属于,但需要在内表明关系...函数可访问内所有成员,但不可以访问函数内部数据 格式 函数可以在内声明时,需要加上关键字friend 函数可以在外声明,外定义。...也不属于成员,不拥有this指针 一个A成为另一个B的时,A就可以访问B的所有成员 的形式分为两种 使整个成为 使中的某一部分函数成为 使整个成为 class...四、特点 单方向性:即可访问,但是不能访问 不传递性:A是B的,C是A的,但C不是B的 不继承:在上面的中有介绍 ?...五、的声明和作用域的关系 使用一个时,要考虑到其的声明和作用域的问题,请看下面代码 class X { public: friend void f(){} //函数在内定义 X()

    62720

    和嵌套

    函数用于的扩展接口中,并非只能拥有函数,也可以将作为,该类称为。...的所有方法都可以访问原始的私有成员和保护成员,但也可以对其做更严格的限制,使得特定的成员函数成为另一个。...和继承、包含的关系 我们为什么要提供的这种接口呢,它既然可以从外部访问的私有部分的权限,是不是与我们面向对象的编程思想相悖呢?...这表明Remote应该作为TV的一个,这样就可以轻松调TV中的成员和成员函数,来完成自己的接口实现。因此不仅没有与面向对象的编程思想相悖,而且提高了公有接口的灵活性。...嵌套的作用域特征: 声明位置 包含它的是否可以使用它 从包含它的派生而来的是否可以使用它 在外部是否可以使用 私有部分 是 否 否 保护部分 是 是 否 公有部分 是 是 是,通过限定符来使用

    73440

    C++的this指针,静态成员,函数

    ---- 1. this指针 在上篇讲C++中,对象,封装,继承(派生),多态的时候,this指针出现在成员函数中,并使用->成员提取符操作成员变量。...函数 所谓函数,就是在中,用friend关键字声明一个函数,这个函数的声明在中,但不作为的成员函数,虽然函数不属于成员函数,却可以访问中的成员,不论成员是public,pirvate...对于函数,放在public和private,或者是protected,都是可以的。...因为是需要来共享数据,那么大多数情况,函数都是有参数的, 因为函数没有this指针,则参数要有三种情况: 要访问非static成员时,需要对象做参数; 要访问static成员或全局变量时...,则不需要对象做参数 如果做参数的对象是全局对象,则不需要对象做参数 至于,也是一样。

    1.5K10

    什么是

    我们就把B叫做A的。...但是我们应该注意的是,我们把B设置成了A的,但是这并不会是A成为B的。说白了就是:甲愿意把甲的秘密告诉乙,但是乙不见得愿意把乙自己的秘密告诉甲。...这也就是说,和原来那个之间并没有什么继承关系,也不存在包含或者是被包含的关系,和我上一篇博文《谈谈:C++的“包含”机制》中的包含是完全不一样的!...大家都之道,遥控机和电视机是不相包含的,而且,遥控器可以操作电视机,但是电视机无法操作遥控器,这就比较符合的特性了。即我们把遥控器说明成电视机。...那么程序中就可以来调用TV中的私有成员。下面,是该程序的输出: 好了,这就是了。关于,我反正是这样认为的,因为有可能会破坏数据的安全性,我们还是少用为好啊!

    54720

    C++函数和的使用

    1.介绍 在C++中,(friend)是一种机制,允许某个或函数访问其他的私有成员。通过,可以授予其他或函数对该类的私有成员的访问权限。...关系在一些特定的情况下很有用,例如在之间共享数据或实现特定的功能。 可以分为两种类型:和函数。...2. (Friend Class): 可以将一个声明为另一个。这样,在被声明为中,就可以直接访问另一个的私有成员。...关系在之间共享数据或实现特定功能时很有用。 关系是单向的,不具有传递性。如果类A是B的B不一定是A的。...但是,有时需要定义一些函数,这些函数不是的一部分,但又需要频繁地访问的数据成员,这时可以将这些函数定义为该函数的函数。除了函数外,还有,两者统称为

    33740

    从零开始学C++之友函数和

    一、介绍 我们知道,的成员函数可以访问同类的其他成员函数,包括公有、私有和保护成员。而的外部函数只能访问的公有成员。 是一种允许非类成员函数访问的非公有成员的一种机制。...可以把一个函数指定为,也可以把整个指定为另一个。...函数 二、函数 函数在作用域外定义,但它需要在体中进行说明 为了与该类的成员函数加以区别,定义的方式是在中用关键字friend说明该函数,格式如下: friend  ...3、某类的函数的作用域并非该类作用域。如果该函数是另一的成员函数,则其作用域为另一的作用域,否则与一般函数相同。...,即A向B开放其Private/Protectd内容, 让B直接存取 :一个可以作另一个 的所有成员函数都是另一个函数 的声明: friend class 名;

    74900
    领券