首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

C++ 实现 super 关键字

Objective-C 里面有一个 super 关键字,可以用来调用该类的父,但是 C++ 里没有。...請問C++是否有類似super這樣的功能 C++ 有 super 关键字吗? --- 根据参考资料,其实 C++ 设计之初是有考虑 super 关键字的。...StackOverflow 上有人回答:Bjarne Stroustrup 《Design and Evolution of C++》一书中提到,super 作为一个关键字 C++ 一开始进行标准化的时候... C++ 中使用 super --- 解决方法很简单,以 DerivedBrabo 为例, DerivedBrabo.h 文件这么写: #ifndef __DERIVED_BRAVO_H__ #...后记 --- C 是一个无所不能的语言,而其承继者 C++ 毫不示弱,一些领域中往往是青出蓝而胜蓝。并不是 C++ 不能用 super。实际上只要对程序设计有足够的了解,是完全可以做到的。

6K50

ReadWriteLock读锁为什么不能升级为写锁?

上篇文章已经介绍过Java并发包里面的读写锁 ReadWriteLock lock=new ReentrantReadWriteLock(); 读写锁的最大功能在于读共享写独占,从而在读多写少的场景下能够提升并发性能...关于读写锁里面有一个锁升级和降级的问题,也就是写锁可以降级为读锁,但是读锁却不能升级为写锁。那么为什么是这样?...其实也不难理解,只要线程获取写锁,那么这一刻只有这一个线程可以临界区操作,它自己写完的东西,自己的是可以看见的,所以写锁降级为读锁是非常自然的一种行为,并且几乎没有任何性能影响,但是反过来就不一定行的通了...举个生活的例子,一个演唱会中,台上有一名歌手在唱歌,我们可以理解为它是写锁,只有他在唱歌,同时台下有很多观众听歌,观众也就是读锁,现在假如歌手唱完了,它可以立马到台下很轻松的就降级为一名观众,但是反过来我们宣布一项规定...这就是读锁为什么不能直接升级写锁的主要原因,当然这里并不是绝对,升级写锁的最佳条件是一次只允许一个读线程升级,这样以来就不会产生大量不可控的竞争,JDK8新增的StampedLock就可以比较优雅的完成这件事

2.9K71

C++从入门到精通——友元

因为cout的输出流对象和隐含的this指针抢占第一个参数的位置。this指针默认是第一个参数也就是左操作数了。但是实际使用cout需要是第一个形参对象,才能正常使用。...,它是定义外部的普通函数,不属于任何,但需要在的内部声明,声明时需要加friend关键字。...(Friend Class)是指在C++,一个可以将另一个声明为其友元,从而使得该友元可以访问该类的私有成员。...C++的友元关系可以通过的定义中使用friend关键字来声明。当一个被声明为另一个的友元时,该友元的所有成员函数都可以直接访问该类的私有成员。...友元关系不能传递 如果B是A的友元,C是B的友元,则不能说明C时A的友元。 友元关系不能继承,继承位置再给大家详细介绍。

59910

C++】构造函数分类 ② ( 不同的内存创建的实例对象 | 栈内存创建实例对象 | new 关键字创建对象 )

一、不同的内存创建的实例对象 1、栈内存创建实例对象 在上一篇博客 【C++】构造函数分类 ① ( 构造函数分类简介 | 无参构造函数 | 有参构造函数 | 拷贝构造函数 | 代码示例 - 三种类型构造函数定义与调用...声明 的 实例对象 方式是 : 该 s1 实例对象存放在栈内存 , 会占用很大块的栈内存空间 ; Student s1; 堆内存 声明 的 实例对象 方式是 : 该 s2 实例对象是存放在堆内存的..., 栈内存只占 4 字节的指针变量大小 ; Student* s2; C++ 语言中 , 可以使用 new 关键字 , 调用有参构造函数 , 创建的 实例对象 ; 在下面的 C++ 代码 ,...声明并定义了 MyClass , 该类定义了一个有参构造函数 , 接受两个整数作为 构造函数参数 ; main 函数 , 使用 使用 new 关键字 来调用 有参构造函数 创建 MyClass...0; } 使用 new 关键字 为 新创建的 实例对象 堆内存中分配内存 , 该对象使用完毕后 , 要使用 delete 关键字释放 堆内存的空间 , delete obj , 避免出现内存泄漏的情况

16020

C++C++友元

C++可以使用friend关键字来将函数、声明为某个的友元 友元包括友元函数和友元 友元具有一些特权,可以访问private的成员 友元只能授予,不能索取,单向,不能传递(比如a是b...的友元,b是c的友元,但a不是c的友元) 友元函数 体中使用friend关键字对友元函数进行声明: 将非成员函数/一般函数声明为友元: friend void func(); //func...友元 体中使用friend关键字将某类声明为自己的友元。...CDate;//声明友元,需要声明class CDate; 这样整个都可以访问CTime的私有成员的了,由于我们只disPlay函数访问,所以可以用下面的方法 friend void...: CDate(int year, int month, int day); //friend CTime;//在这里声明友元没用,因为友元只能授予,不能索取!

37320

C++初阶-和对象下

C++和对象最终之章 零、前言 一、再谈构造函数 1、构造函数体赋值 2、初始化列表 3、explicit关键字 二、static成员 三、C++11 新式成员初始化 四、友元 1、友元函数 2、友元...,但是不能将其称作为对象成员的初始化构造函数体的语句只能将其称作为赋初值,而不能称作初始化。...,不属于某个具体的实例 静态成员变量必须在外定义,定义时不添加static关键字 静态成员即可用名::静态成员或者对象.静态成员来访问 静态成员函数没有隐藏的this指针,不能访问任何非静态成员...,它是定义外部的普通函数,不属于任何,但需要在的内部声明,声明时需要加friend关键字 示例: class Date { friend ostream& operator<<(ostream...:售票、咨询、安检、保全、卫生等 火车:带用户到目的地 火车站中所有工作人员配合起来,才能让大家坐车有条不紊的进行,不需要知道火车的构造,票务系统是如何操作的,只要能正常方便的应用即可。

36130

EasyC++66,友元函数

因此C++提供了另外一种形式的访问权限,叫做友元(friend)。 友元有三种,分别是友元函数、友元和友元成员函数。...通过让函数成为的友元,可以赋予该函数与成员函数一样的访问权限,也就是说我们可以友元函数当中访问的私有成员变量。 介绍友元函数的使用之前,我们需要先了解为什么需要友元函数。...C++ Primer给了一个非常不错的例子,之前运算符重载的例子当中,我们实现了一个Time。用来记录时间,假设我们需要重载它的*运算符,能够允许一个时间对象和一个浮点数相乘。...创建友元的方法很简单,我们只需要在函数签名之前加上关键字friend。...private和public数据 由于友元函数不是成员函数,所有我们实现的时候不需要使用Time::限定符,也不用在实现当中加上关键字friend,函数的实现如下: Time operator*(double

24110

C++的友元

前面提到过,的封装,私有的成员变量和成员函数无法外访问,但是总有那么一些情况需要给外的对象赋予一定的访问权限。...同样的道理,C++实现这种功能需要借助友元的机制。简单来说就是如果某个外的对象需要访问内的私有成员,内声明为友元类型即可。...一、全局函数做友元 本例,首先构造了一个 house ,需要在内声明全局函数 Friend 为友元方能访问内的私有成员: class house { friend void Friend(house...// 定义构造函数给成员变量赋值 { livingroom = "客厅"; bedroom = "卧室"; } }; void Friend(house& p_house) { // 可以正常访问内的公有成员...(house& p_house); // friend 是友元的关键字 友元的声明:friend class friend_house; 成员函数的声明:friend void goodGay::visit1

25700

(转载非原创)C++的友元

同样的道理,C++实现这种功能需要借助友元的机制。简单来说就是如果某个外的对象需要访问内的私有成员,内声明为友元类型即可。...一、全局函数做友元 本例,首先构造了一个 house ,需要在内声明全局函数 Friend 为友元方能访问内的私有成员: class house { friend void Friend(house...// 定义构造函数给成员变量赋值 { livingroom = "客厅"; bedroom = "卧室"; } }; void Friend(house& p_house) { // 可以正常访问内的公有成员...(house& p_house); // friend 是友元的关键字 友元的声明:friend class friend_house; 成员函数的声明:friend void goodGay::visit1...::visit2() { cout building->m_sittingroom << endl; //要访问私有属性的元素; //Building 定义友元

33950

C++与对象理解和学习(下)

放在专栏【C++知识总结】,会持续更新,期待支持 建议先看完 【C++与对象理解和学习(上) 【C++与对象理解和学习() 本章知识点概括Ⅰ 本章知识点概括Ⅱ ---- 初始化列表...关键字只是声明 静态成员即可用 名::静态成员 或者 对象.静态成员 来访问 静态成员函数没有隐藏的this指针,不能访问任何非静态成员 静态成员也是的成员,受public、protected...友元函数与友元 友元函数 友元函数可以 直接访问的 私有成员,它是 定义外部的 普通函数,不属于任何,但需要在的内部声明,声明时需要加 friend关键字。...不具有继承性(后面讲到继承时会提) 友元 与友元函数相通,这里我们将一个的声明放在另一个,并在前面加上friend关键字,就会变成这个的友元。...就可以实现对该类的私有成员进行正常访问。

47830

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

友元函数 友元 二、友元函数 友元函数作用域外定义,但它需要在体中进行说明 为了与该类的成员函数加以区别,定义的方式是中用关键字friend说明该函数,格式如下: friend  ...类型 友元函数名(参数表); 友元的作用在于提高程序的运行效率 友元函数注意事项: 1、友元函数不是的成员函数,函数体访问对象的成员,必须用对象名加运算符“.”加对象成员名。...但友元函数可以访问的所有成员(公有的、私有的、保护的),一般函数只能访问的公有成员。 2、友元函数不受的访问权限关键字限制,可以把它放在的公有、私有、保护部分,但结果一样。...友元注意事项: 1、友元关系是单向的 2、友元关系不能被传递 3、友元关系不能被继承 TeleController.h : #ifndef  _TELE_CONTROLLER_H_...参考: C++ primer 第四版 Effective C++ 3rd C++编程规范

72800

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

一、友元简介 1、友元引入 C++ 语言中 , " 友元 " 是 一个 与 另外一个 的 特殊关系累 , A 的 " 友元 " B , 可以直接访问 A 的 私有成员...和 受保护成员 ; B 是 A 的好朋友 , B 可以访问 A 的所有成员 ; 2、友元声明 声明一个 B 是 另一个 A 的 友元 , 可以 A 中使用 friend 关键字来声明 ;..., 但是 A 不是 B 的友元 , A 不能访问 B 的私有和保护成员 ; 4、友元继承性 友元 关系不具有继承性 , 即 子类不能直接继承父的友元 ; 5、友元作用 友元主要作用 :..., // 声明 StudentCaculate 是 Student 的友元 // StudentCaculate 可以访问 Student 的私有成员 friend class...Student 的友元 // StudentCaculate 可以访问 Student 的私有成员 friend class StudentCaculate; // 声明友元函数

1K10

C++友元函数和友元

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

16850

C++友元函数和友元的使用

1.友元介绍 C++,友元(friend)是一种机制,允许某个或函数访问其他的私有成员。通过友元,可以授予其他或函数对该类的私有成员的访问权限。...2.友元 友元(Friend Class): 可以将一个声明为另一个的友元。这样,在被声明为友元的,就可以直接访问另一个的私有成员。...友元关系通常在的声明部分使用 friend 关键字来声明。...这样,友元函数可以直接访问该类的私有成员。 友元函数可以是非成员函数,也可以是其他的成员函数。 友元函数通常在的声明部分或声明外部使用 friend 关键字来声明。...C++,我们使用对数据进行了隐藏和封装,的数据成员一般都定义为私有成员,成员函数一般都定义为公有的,以此提供与外界的通讯接口。

30640

C++复习笔记——C++ 关键字

try try(尝试)用于实现 C++ 的异常处理机制。可以 try调用可能抛出异常的函数,然后try后面的 catch捕获并进行处理。...当模板参数使编译器指认一个类型时产生了误解。 class class()是 C++ 面向对象设计的基础。使用class关键字声明一个。 for for是 C++ 的循环结构之一。...(即.c文件) C const声明一个变量,除了不能改变其值外,它仍是一具变量。...友元可以访问与其有 friend关系的的 private/protected 成员,通过友元直接访问的 private/protected成员的主要目的是提高效率。友元包括友元函数和友元。...namespace namespace(命名空间)用于逻辑上组织,是一种比大的结构。 template template(模板),C++ 泛型机制的实现。

1.3K30

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

一、友元函数简介 C++ 语言中 , " 友元函数 " 是 与 相关联的函数 , " 友元函数 " 不是的成员函数 , 但是可以访问的 private 私有成员 和 protected 保护成员...; 友元函数可以是 全局函数 本类的成员函数 其他的成员函数 友元函数 是 的 朋友 , 友元函数 , 可以修改 对象 的 私有属性 和 保护属性 ; 友元函数 破坏了 的 封装性...; 二、友元函数声明 1、友元函数语法 " 友元函数 " 需要在 中进行声明 , 使用 friend 关键字修饰函数 , 语法如下 : class ClassName { // 成员变量和成员函数...: private: , protected: , public: , 下声明 友元函数 , 并不影响到 友元函数 的使用 ; 只要 声明了 " 友元函数 " , 不管什么位置声明 , 都可以正常通过该友元函数...; private: // 声明友元函数 friend void changeAge(Student* s, int age); 4、友元函数示例 声明 如下友元函数 : private

81620

C++和对象(下)

前言 在前两篇关于和对象的文章,我们学习了C++的基本形式、对象的创建与使用以及每个中都有的六大天选之子:默认成员函数,现在对的基本框架已经搭好,关于和对象的学习还存在一些细节,深入理解这些细节就是本文的主要目的...关键字只是声明 静态成员可用 名::静态成员 或者 对象.静态成员 来访问 静态成员函数没有隐藏的 this 指针,不能访问任何 非静态成员 静态成员也是的成员,受 public 、protected...friend ,译为朋友,常用于外部函数的友好声明 的成员变量为私有,外函数无法随意访问,但可以中将外函数声明为友元函数,此时函数可以正常访问私有成员 友元函数会破坏域的完整性...,有利有弊 注意: 友元是单向关系 友元不具有传递性 友元不能继承 友元声明可以写在的任意位置 ️友元函数 friend 修饰函数时,称为友元函数 class Test { public:...a; } 内部类天生就是外的友元 也就是说,B 天生就能访问 A 的成员 ️特性 内部类C++中比较少用,属于了解型知识 内部类的最大特性就是使得内部类能受到外的访问限定符限制 内部类特点:

14820
领券