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

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

一、简介 1、引入 在 C++ 语言中 , " " 是 一个 与 另外一个 的 特殊关系累 , 在 A 的 " " B 中 , 可以直接访问 A 的 私有成员...和 受保护成员 ; B 是 A 的好朋友 , B 可以访问 A 的所有成员 ; 2、声明 声明一个 B 是 另一个 A 的 , 可以 在 A 中使用 friend 关键字来声明 ;...Student { private: // 声明 StudentCaculate 是 Student // 在 StudentCaculate 中可以访问 Student 中的私有成员...friend class StudentCaculate; } 3、单向性 单向性 : 关系是单向的 , 声明一个 B 是 另一个 A 的 , B 可以访问 A 的 所有成员..., 该操作难度很大 ; 三、代码示例 ---- 在 Student 中 , 定义了 StudentCaculate , // 声明 StudentCaculate 是 Student

1.2K10

【C++】函数 ( 函数简介 | 函数声明 | 函数语法 | 函数声明不受访问控制限制 | 函数参数要求 )

; 二、函数声明 1、函数语法 " 函数 " 需要在 中进行声明 , 使用 friend 关键字修饰函数 , 语法如下 : class ClassName { // 成员变量和成员函数...函数 的 函数名 ; arguments : 是 函数 的 参数列表 ; 2、函数声明不受访问控制限制 " 函数 " 的 声明 , 不受的访问控制限制 , 可以在任何地方定义 , 如...; private: // 声明函数 friend void changeAge(Student* s, int age); 4、函数示例 在 声明 如下函数 : private...: // 声明函数 friend void changeAge(Student* s, int age); 即使使用了 private 限定函数 , 在的外部也能访问该函数 ; 在的外部定义上述函数...- 函数 ---- 在下面的代码示例中 , Student 有一个私有成员变量 age , 并且声明了一个函数 changeAge ; private: // 声明函数 friend

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

    所有的方法都可以访问原始的私有成员和保护成员 声明 friend class ClassName 声明可以位于公有、私有或保护部分,其所在的位置无关紧要。..._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); };  ...这种问题的解决方法是,使用Remote声明中只包含方法声明,并将实际的定义放在Tv之后。

    57270

    C++函数和

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

    17150

    C++_函数与

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

    52320

    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的。...counter, 8); cout << "counter.x after call to setX friend function: "; counter.print(); } 需要注意的是,我们一般将函数的声明放在的所有修饰符的前端

    31420

    C++:11---函数、

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

    62020

    和嵌套

    函数用于的扩展接口中,并非只能拥有函数,也可以将作为,该类称为。...的所有方法都可以访问原始的私有成员和保护成员,但也可以对其做更严格的限制,使得特定的成员函数成为另一个。...和继承、包含的关系 我们为什么要提供的这种接口呢,它既然可以从外部访问的私有部分的权限,是不是与我们面向对象的编程思想相悖呢?...嵌套 c++允许将声明放在另外一个中,在另外一个声明被称为嵌套。对进行嵌套的主要目的是为了帮助实现另外一个,并避免名称冲突。...声明的位置决定了的作用域和可见性。可见后,访问控制规则(公有、私有、保护、)决定程序对嵌套成员的访问权限。

    72340

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

    ,在静态函数里面,不可以直接访问非静态成员。...函数 所谓函数,就是在中,用friend关键字声明一个函数,这个函数的声明中,但不作为的成员函数,虽然函数不属于成员函数,却可以访问中的成员,不论成员是public,pirvate...对于函数,放在public和private,或者是protected,都是可以的。...因为是需要来共享数据,那么大多数情况,函数都是有参数的, 因为函数没有this指针,则参数要有三种情况: 要访问非static成员时,需要对象做参数; 要访问static成员或全局变量时...,则不需要对象做参数 如果做参数的对象是全局对象,则不需要对象做参数 至于,也是一样。

    1.5K10

    模板

    它可以访问全局对象;可以使用全局指针访问非全局对象;可以创建自己的对象;可以访问独立对象的模板 的静态数据成员。 如果要为函数提供械板参数,可以如下所示来进行声明。...count(); 非约束模板 的所有具体化都是的每一个具体化的 上边说的约束模板函数是在外面声明的模板的具体化。...通过在内部声明模板,可以创建非约束函数,即每个函数具体化都是每个具体化的。...共同的: 一个成员函数,它可以是一个的成员,同时是另一个,但有时将函数作为两个更合理。...这两个都有内部时钟,且希望它们能够同步,则该包含下 述代码行: class Analyzer;//前向声明 前向声明使编译器看到Probe声明中的声明时,知道Analyzer是一种类型。

    99070

    什么是

    我们就把B叫做A的。...但是我们应该注意的是,我们把B设置成了A的,但是这并不会是A成为B的。说白了就是:甲愿意把甲的秘密告诉乙,但是乙不见得愿意把乙自己的秘密告诉甲。...=======================声明方法和其用法======================= 声明的方法其实很简单,只要我们在A的成员列表中写下如下语句:...friend class B;   这样一来,B就被声明成了A的。...那么程序中就可以来调用TV中的私有成员。下面,是该程序的输出: 好了,这就是了。关于,我反正是这样认为的,因为有可能会破坏数据的安全性,我们还是少用为好啊!

    54020

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

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

    73400

    C++面向对象,全局函数、、成员函数做

    生活中你的家有客厅(Public),有你的卧室(Private) 客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去 但是呢,你也可以允许你的好闺蜜好基进去。...在程序里,有些私有属性 也想让外特殊的一些函数或者进行访问,就需要用到的技术 的目的就是让一个函数或者 访问另一个中私有成员 的关键字为 ==friend== 的三种实现 全局函数做... 成员函数做 全局函数做 class Building { //告诉编译器 goodGay全局函数 是 Building的好朋友,可以访问中的私有内容 friend void...test01() { Building b; goodGay(&b); } int main(){ test01(); system("pause"); return 0; } ...告诉编译器 goodGay是Building的好朋友,可以访问到Building中私有内容 可以设置之间的访问权限 成员函数做 class Building; class goodGay

    36720

    【C++ 语言】面向对象 ( 成员函数 | 常量函数 | 函数 | | 单例 )

    , 另一种是在函数中访问 ; 函数 , 在函数中 , 可以从的外部访问中的私有成员变量 , 函数声明方法 friend 返回值类型 方法名称 ( 参数列表 ) ; ; Student.h...中友函数声明 //函数声明 , 可以在外部修改中的私有成员变量 friend void changeAge(Student*); 函数实现 , 函数并不与实现写在一起 , 而是在使用的位置进行实现...---- , 中所有的成员函数都是该类的函数 , 可以访问该类对象的私有成员变量 ; 声明 , 声明方法 friend class 名称; , 中所有的成员函数都是该类的函数...; Student.h 中友声明 //声明 , 可以在中访问修改中的私有成员变量 //中的所有的成员函数都是函数 friend class Teacher; 定义与实现...中的 , 该中的所有函数都是 Student 对象的函数 class Teacher { public: //声明方法 , 修改 Student 中的 id 编号 void

    50620

    c++访问权限及

    基本相似,唯一的一点不同是父定义的private成员,子类不可以访问,但是父定义的protected成员,子类是可以访问的。...2. 如果想允许不属于当前的一个函数存取当前中的成员,那么要怎么才能做到呢,答案是。所谓,顾名思义是我们成为朋友了,关系已经比较亲近了,可以适当的参与对方的生活了。...关键字是friend,我们可以在一个的内部声明一个函数、,或者A的成员函数也可以被声明为B。...//函数不属于的成员,所以它不受其所在声明区域public,private,protected的影响 friend void g(A* a, int x); }; void g(A*...对于在中被声明的对象而言,不论是的公有、私有还是保护成员,都是可以直接访问的。

    96420

    时间差(与对象+指针+

    题目描述 定义一个时间,包含私有属性:时、分、秒,要求加入属性的get方法,其他函数根据需要自己定义。...定义一个该类的函数,参数是两个时间对象的指针,要求计算两个时间对象的时间差,单位按秒计算,两个时间对象属于同一天,返回时间差的绝对值 例如1时2分3秒和4时5分6秒的时间差是3小时3分3秒,折算为秒共...45 输出样例1 1时2分3秒--4时5分6秒时间差为10983秒 1时1分1秒--1时1分1秒时间差为0秒 23时44分55秒--12时23分45秒时间差为40870秒 思路分析 首先你的时间名不能叫做...是因为库函数里面也有一个time…… 返回时间差的绝对值,是以秒为单位,不妨在定义里面增加一个成员函数,用来换算小时和分钟,计算出总秒数。...还要注意到我们需要定义一个函数,而且最高函数的参数是两个时间指针,通过指针访问对象的成员需要用->或者*().的方式。

    15530
    领券