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

_成员函数可以访问本类对象私有成员

成员函数可以访问本类对象私有成员 sList是一个 私有成员是head,有一个成员函数形参是本类对象(引用,引不引用不影响结论和原因) ==为什么呢!...head明明是b私有成员,为什么可以被访问了!!??== 因为!...对象b是sList,而这个intersection函数是sList成员函数 head虽然是sList对象私有成员,但是是在sList访问 ==就是 在访问了本类(实例化对象)私有成员...本来就是成员,只是抽象和实例化问题 这非常合理地体现了 封装性 这个就是不行,在访问了 这一点是非常好用,可以利用这一点 ==用成员函数肆无忌惮地访问对象私有成员!...==只要声明函数是成员函数,将外部同类对象设为形参(或加个引用)就可以了!! 不必再为如何访问到同类外部对象私有成员而苦思了!

82830

【C++】‘与对象‘-三部曲——(3)(13)

关键字 【待补】 四.友元 1.友元函数 友元函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明声明时需要加friend关键字 说明: 友元函数可访问私有和保护成员...,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同 友元函数声明与函数声明不同...,仅仅是表达权限 代码演示: class Date { //友元函数声明——表达一种权限(函数可以访问内对象) friend ostream& operator...例:比如下面Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time 私有成员变量,但想在Time访问Date私有成员变量则不行。...; // 声明日期为时间友元 //则在日期中就直接访问Time私有成员变量 public: Time(int hour = 0, int minute = 0, int second

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

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

它可以访问私有成员变量和保护成员变量,同时也可以访问私有成员函数和保护成员函数。友元函数声明使用关键字friend。...(Friend Class)是指在C++中,一个可以将另一个声明为其友元,从而使得该友元可以访问该类私有成员。...在C++中,友元关系可以通过在定义中使用friend关键字来声明。当一个声明为另一个友元时,该友元所有成员函数都可以直接访问该类私有成员。...需要注意是,友元关系是单向,即如果类A将B声明为友元,那么只有B可以访问A私有成员,而A不能访问B私有成员。...比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。

23310

C++心决之类和对象详解(下篇)(封装进阶篇)

<<(&d1, cout); 不符合常规调用 // 因为成员函数第一个参数一定是隐藏this,所以d1必须放在<<左侧 ostream& operator<<(ostream& _cout)... 私有 成员,它是 定义在外部 普通函数 ,不属于任何,但需要在内部声明声明时需要加friend 关键字。...,但不是成员函数 友元函数不能用const修饰(友元函数并不是成员函数,成员函数中有this指针,this指针才需要被const修饰)(非成员函数不允许使用类型限定符) 友元函数可以在定义任何地方声明...比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。...友元关系不能继承 class Time { friend class Date; // 声明日期为时间友元,则在日期中就直接访问Time私有成 员变量 public: Time(int

7910

【C++和对象】const成员函数及流插入提取

注意: const成员函数内不可以调用其它非const成员函数 在const成员函数内是不允许调用非const成员函数。因为const成员函数被声明为const,它承诺了不会修改成员变量。...,所以参数顺序不匹配,我们只能将其重载成全局函数;与此同时流插入运算符和流提取运算符通常都是以友元函数形式定义在声明内部,这允许它们访问私有成员。...如下面代码所示: #include using namespace std; class Date { public: //流插入流提取 //友元函数允许非成员函数访问私有对象...friend ostream& operator<<(ostream& out, const Date& d); friend istream& operator>>(istream& in, Date...,这允许它们访问私有成员

10110

【C++】与对象——友元,内部类,匿名对象

友元关键字 :friend 可以理解为把他看做朋友,所以他可以使用东西。这就是友元做到事情是类似的,通过设置友元,在一个中可以访问函数与变量。...总结一下: 友元函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在 内部声明声明时需要加friend关键字。...注意: 友元函数可访问私有和保护成员,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同...Time声明友元即可成功: class Time { // 声明日期为时间友元, //则在日期中就直接访问Time私有成员变量 friend class Date; public..._second = second; } 定义内部类 class Time { friend class Date; // 声明日期为时间友元,则在日期中就直接访问Time私有成员变量

8610

C++中与有关注意事项(更新中~~~)

针对继承,其构造函数一般调用顺序为基构造函数 ---> 成员对象构造函数 ---> 它自身构造函数(这里是指初始化列表后大括号内内容) 静态成员(static member)必须在声明...里面的任何成员变量在定义时是不能初始化,尽管你可以编译过。 一个对象调用了一次构造函数之后,是不允许再次调用构造函数。...如果一个是另一个友元,那么该类友元函数将不能访问另一个私有成员。...friend void f2(Base b); void f3(Base b){cout << b.x << " " << b.y << " " << b.z << endl; } //在友元内部可以访问另一个私有成员...public: int memi(){return memi;} //error double getmemd(){return memd;} }; 无论是在外还是在访问私有成员时最好设置一个接口

69920

【C++】和对象---友元,内部类,匿名对象详解

所以要将operator<<重载成 全局函数。但又会导致外没办法访问成员,此时就需要友元来解决。operator>>同理。...<<(&d1, cout); 不符合常规调用 // 因为成员函数第一个参数一定是隐藏this,所以d1必须放在<<左侧 ostream& operator<<(ostream& _cout)...: 这是重载成全局函数写法: 友元函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明声明时需要加friend关键字。...,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同 ⚡友元 友元所有成员函数都可以是另一个友元函数...(比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。

15410

【C++干货基地】面向对象核心概念 static成员 | 友元 | 内部类 | 匿名对象

,定义时不添加static关键字,中只是声明 静态成员即可用 名::静态成员 或者 对象.静态成员访问 静态成员函数没有隐藏this指针,不能访问任何非静态成员 ....比如说在私有成员变量只有成员函数可以放其他函数是不能访问但是使用了友元函数声明了之后,进行声明中就可以去访问我们私有成员了。...所以要将operator<<重载成 全局函数。但又会导致外没办法访问成员,此时就需要友元来解决。operator>>同理。...对一个函数进行友元声明,这个函数就叫友元函数,可以访问声明私有成员。...比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接 访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。

3100

友元

而原来成员函数按相反顺序处理操作数,即Time*double 所以使用非成员函数可以按所需顺序获得操作数(double Time) ,接下来只有一个问题需要解决了,就是对象数据隐藏性,然而,有一特殊成员函数可以访问私有成员...minutes"; } 这样我们就可以使用cout<<p1; 这里我们只是访问了Time私有成员而没有访问ostream私有成员,所以我们只需要Time友元而不需要ostream友元 方式...)是C++中另一个重要概念,它允许一个将另一个声明为自己友元,从而使得被声明为友元可以访问该类私有成员。...比如在只声明B是A友元情况下,B可以访问A私有成员,但是A却不可以访问B私有成员,即A不是B友元。 (3)友元关系不能传递:如果B是A友元,C是B友元,则不能说明C是A友元。...(友元友元不是友元) class MyClass { private: int value = 10; // 声明友元 friend class FriendClass

13410

c++与对象(五):友元、内部类、临时对象、匿名对象

友元包括:友元函数和友元 1.1友元函数 友元函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明声明时需要在前面加friend关键字 之前我们在重载...所以要将operator<<重载成全局函数。但又会导致外没办法访问成员,此时就需要友元来解决。..._day; return in; } 说明: 友元函数可访问私有和保护成员,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数...友元函数调用与普通函数调用原理相同 1.2友元 友元所有成员函数都可以是另一个友元函数,都可以访问另一个非公有成员。...比如下面Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。

18010

【C++初阶】和对象终极篇

友元函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在 内部声明声明时需要加friend关键字。...之前我们讲过了友元函数,今天我们再来聊一聊友元相关问题 先来复习一下友元函数: 友元函数可访问私有和保护成员,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明...,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同 友元 :是你友元,就可以偷你家 友元所有成员函数都可以是另一个友元函数,都可以访问另一个非公有成员...比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接 访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。...友元关系不能继承,在继承位置再给大家详细介绍 class Time { friend class Date;   // 声明日期为时间友元,则在日期中就直接访问Time私有成员变量

20350

C++ 重载运算符 继承 多态 (超详细)

二)基与派生 (1)继承语法形式: class 派生名:基名表 { 数据成员成员函数声明 }; 基名表构成: 访问控制 基名1 访问控制 基名2… 继承多各类时叫做多继承,容易产生二义性...(4)派生静态数据成员中定义静态成员,将被所有派生共享 2、基初始化: (5)派生初始化 派生构造函数声明格式为: 派生构造函数(变元表):基(变元表)、对象成员1(...赋值兼容应注意问题: 指向基指针可以指向公有派生对象,但不允许指向它私有派生对象。...声明为指向基对象指针,当其指向公有派生对象时,只能用它来直接访问派生中从基继承来成员,而不能直接访问公有派生定义成员。...可以理解为派生完全包含基,指向基任何成员,都可以在公有派生中找到对应成员对象与之对应,如果是私有继承,能找到但是不能访问。但是派生中有的对象,基中不一定会有,所以不能这么操作。

1K21

【c++】和对象(七)

关键字,中只是声明 静态成员即可用 名::静态成员 或者 对象.静态成员访问 静态成员函数没有隐藏this指针,不能访问任何非静态成员 静态成员也是成员,受public、protected...、private 访问限定符限制 2.友元 友元(Friend)在C++中是一个重要概念,它允许某些特定外部函数或访问另一个私有(private)或受保护(protected)成员 2.1...operator>>同理 友元函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明声明时需要加friend关键字 class Date { friend...,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同 2.3友元 友元所有成员函数都可以是另一个友元函数...Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行 友元关系不能传递:如果

6820

C++奇迹之旅:和对象const成员&&static关键字&&友元&&内部类

所以要将operator>同理。...<<(&d1, cout); 不符合常规调用 // 因为成员函数第一个参数一定是隐藏this,所以d1必须放在<<左侧 ostream& operator<<(ostream& _cout)...,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同 友元 友元所有成员函数都可以是另一个友元函数...比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。...友元关系不能继承,在继承位置再给大家详细介绍 class Time { friend class Date; // 声明日期为时间友元,则在日期中就直接访问Time私有

10910

【C++航海王:追寻罗杰编程之路】与对象你学会了吗?(下)

所以要将operator<<重载成全局函数。 但又会导致外没办法访问成员,此时就需要友元来解决。operator>>同理。...<<(&d1, cout); 不符合常规调用 // 因为成员函数第一个参数一定是隐藏this,所以d1必须放在<<左侧 ostream& operator<<(ostream& _cout)...,但不是成员函数; 友元函数不能用const修饰; 友元函数可以在定义任何地方声明,不受访问限定符限制; 一个函数可以是多个友元函数; 友元函数调用与普通函数调用原理相同。...3.2 -> 友元 友元所有成员函数都可以是另一个友元函数,都可以访问另一个非公有成员。...友元关系是单向,不具有交换性; 比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行

5310

c++中对象和关系_对象只能访问该类私有成员

大家好,又见面了,是你们朋友全栈君。...所有成员,任何代码均可访问该项,访问权限最大也就意味着最不安全 Private访问修饰符:范围:私有的,只有内部可以进行访问,允许一个将其成员变量和成员函数对其他函数和对象进行隐藏。...只有同一个函数可以访问私有成员。即使是实例也不能访问私有成员。...和内嵌成员,只有派生可以访问该项; Internal访问修饰符:范围:内部,默认,程序集内部可以访问,允许一个将其成员变量和成员函数暴露给当前程序中其他函数和对象。...注意:默认访问修饰符是internal,成员默认访问修饰符是private 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

1.6K10

【C++初阶】—— 和对象 (下)

_day; } 注意: 重载操作符必须有一个自定义类型参数 运算符重载定义在外时不能访问私有成员,因此重载成成员函数 作为成员函数重载时,成员函数第一个参数为隐藏this 赋值运算符重载...,存放在静态区 静态成员变量必须在外定义,中只是声明 静态成员可用 名::静态成员 或者 对象.静态成员访问 静态成员函数没有隐藏this指针,不能访问任何非静态成员 静态成员也是成员...友元函数: 可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明声明时需要加friend关键字 例如: class Date { // 不声明友元,将无法调用私有成员...,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数 友元函数调用与普通函数调用原理相同 友元 友元所有成员函数都可以是另一个友元函数..._day = day; } private: int good; A _d; }; B能直接访问A私有成员变量,但是A 不能访问B 中私有成员变量 讲到友元,我们再来介绍一下一个跟友元有很大关系内部类

4810

与对象下篇

<<(&d1, cout); 不符合常规调用 // 因为成员函数第一个参数一定是隐藏this,所以d1必须放在<<左侧 ostream& operator<<(ostream& _cout...5.友元函数调用与普通函数调用原理相同 友元: 1.友元所有成员函数都可以是另一个友元函数,,都可以访问另一个私有成员。...比如上述Time和Date,在Time声明Date为其友元,那么可以在Date中直接访问Time私有成员变量,但想在Time访问Date私有成员变量则不行。...class Time { // 声明日期为时间友元,则在日期中就直接访问Time私有成员变量 friend class Date; public: Time(int hour =...2.内部类虽然定义在里面,但完全是两个独立,和定义在外面没有区别,真正影响点是B访问受A域和访问限定符限制,内部类受访问限定符限制,如果一个内部类被设置成私有,那么main函数无法访问

42230

【C++】与对象(下)

静态成员变量必须在外定义,定义时不添加static关键字,中只是声明 3. 静态成员即可用 名::静态成员 或者 对象.静态成员访问 4....yes static应用:"实现一个,计算程序中创建出了多少个对象" 原理: 定义一个静态成员变量_scount,再在声明一个访问静态成员变量静态成员函数GetACount(); 构造...友元 友元分为:友元函数和友元(有元会在继承讲) 友元函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明声明时需要加friend关键字。...、 说明: 友元函数可访问私有和保护成员,但不是成员函数 友元函数不能用const修饰 友元函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个友元函数...友元函数通常用在一个需要使用一个内部成员变量,比如operator<< 因为cout输出流对象和隐含this指针在抢占第一个参数位置 class Date { friend ostream&

9910
领券