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

两个类可以使用C++看到对方吗?

两个类可以使用C++看到对方吗?

这个问题涉及到C++的类和对象的概念。在C++中,类是一种定义对象行为和属性的模板。对象是类的实例,它具有类定义的属性和行为。

当两个类相互关联时,它们可以访问对方的公共成员。如果一个类想要访问另一个类的私有成员,则需要使用友元类或者提供公共接口来实现。

例如,类A和类B可以相互访问对方的公共成员,但是如果类A想要访问类B的私有成员,则需要在类B中声明类A为友元类,或者提供一个公共接口来实现。

总之,两个类可以相互访问对方的公共成员,但是需要使用友元类或者公共接口来访问对方的私有成员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++】基数组不可以使用多态原因

,arry[]中保存的都是基Node的元素,因为数组的取值方式便是固定偏移量的,一旦数组中存储的是继承的话,那么这个数组的取值方式,会导致出现不可见的错误。...(备注:通常情况下会认为这个元素是基)。...<<endl;} int main() { Base a[5]; // 这里存储的是基的数组 Derive d; a[1] = d; // a[1]赋值 给继承 for(int...Base f() . // b[0]->f()Derive f() . // b[1]->f() 输出结果分析: 1.通过上面的输出,可以看出一旦数组是基,就算数组中的元素赋值为继承,也是被当作基使用...2.非要在数组中使用多态的话,可以采用指针的方式,指针的偏移量是固定的,可以使继承的多态得到实现。

78610

每日一问(11) 什么是虚函数

故事 这是餐桌上一个必点菜,大家都知道,根本不是独家秘笈, 但是看了无数次文章和book,依然完全被锤,停留 表面上,完全不知道对方在想什么, 其实很简单,就这样呀。 感觉没问题就是最大的问题。...我需要你必须重视起来,思想上重视就是口号,必须采取行动 必须阅读 RocksDB是使用C++编写的嵌入式kv存储引擎 和 Protocol buffers 看到别人是怎么用的,从这里开始, 简述C++虚函数作用及底层实现原理...问题3:什么是move copy 标准库:如何使用 自定义一个:如何使用 疑问:既然虚函数表,在编译时候确定了,并且放到只读数据段,问题来了,如果继承重写需要修改里面函数地址给怎办?...使用gdb探索 C++ 虚函数表 不同对象,创建不同的虚指针?创建不同的虚函数表?..., 一个可以创建多个对象 在创建对象时,编译系统只为对象中的成员数据(成员变量)分配内存空间 而同类对象的成员函数的代码却是共享的。 内部的成员函数:普通函数:不占用内存。

46430

面试理想汽车,给我整懵了。。。

理想汽车 今天看到一个帖子,挺有意思的。 先别急着骂草台班子。 像理想汽车这种情况,其实还挺常见的。 就是:面试官说出一个错误的结论,我们该咋办?...我们可以两个方向进行解释: 用逻辑进行正向推导,证明你的结论的正确性 用类似反证法的手段进行解释,试图从他的错误结论出发,往回推,直到推出一个对方能理解的,与常识相违背的基本知识 那么对应今天这个例子...,关于「后序遍历」的属于一个定义的认识。...我们可以用正向推导的方法,试图纠正对方可以从另外两种遍历方式进行入手,帮助对方理解。...2,6,14,11,7,3,12,8,4,13,9,10,5,1] 提示: 节点总数在范围 [0, 10^4] 内 0 <= Node.val <= 10^4 n 叉树的高度小于或等于 1000 进阶:递归法很简单,你可以使用迭代法完成此题

17410

百度MLDL方向面经

随便自我介绍一下之后立马:“你会用C++?”   我:“不是很擅长……可以python?”..., “……行吧(勉为其难状)” 第一题处理字符串的,没睡醒写了好久 第一道完了面试官显然觉得不够尽兴,墙裂要求要上C++再来一道,幸好题目不难,合并两个排序了的链表,硬着头皮写出来了,C++我是真的心虚...“等一下,C++会用?” “不是很擅长……” “!?前面一轮没考C++?!” “啊?那个啊?...(这种问题我不会上当的) “你还有什么问题?”(我后来问了不少) “什么时候毕业?能先来实习?”...当时三面的问题没有应对的很好,自己都觉得是不是要挂了,后来隔了一星期很小心翼翼地问了一下面试官……真是谢谢他没有挂了我……远程面试真的是有好处的,至少写程序的时候对方不会看着你,精神压力会小不少。

68200

C++】继承和多态高频面试题整理

这种机制实现了方法的定义与具体的对象无关,而对方法的调用则可以关联于具体的对象。...C:优先使用继承,而不是组合,是面向对象设计的第二原则 D:继承可以使子类能自动继承父的接口,但在设计模式中认为这是一种破坏了父的封装性的表现 答案:C(之前的文章里也有相关的讲解)...我们可以先试一下: 这里编译器就直接报错,说static和virtual不能一起使用 所以: 静态成员不能是虚函数,因为因为静态成员函数没有this指针,使用类型::成员函数就可以调用,但这种调用方式无法访问虚函数表...static和virtual不能一起使用。 2.6 构造函数可以是虚函数? 答: 不能,因为对象中的虚函数表指针是在构造函数初始化列表阶段才初始化的。 2.7 析构函数可以是虚函数?...答: 析构函数是可以搞成虚函数的,并且有些场景下是不是还需要搞成虚函数重写啊,这个是我们讲的虚函数重写的两个例外之一,大家忘了可以回看之前的文章。 2.8 对象调普通函数快还是虚函数更快?

15610

腾讯2016春季校园实习招聘技术岗初试(一面)问题汇总(CC++后台)

答: (1)关于继承和访问权限,struct默认继承和访问权限均为public,class均为private; (2)关于模版,在模版中,类型参数前面可以使用class或typename,不能使用...TCP是面向连接的协议,也就是说协议本身向对方发送数据前先确信对方准备好,对方收到后要回送确认。 UDP是无连接协议,就是说协议本身不管对方是否准备好,直接向对方发送,不能确保对方收到。...如果消息发送失败,客户端会提示消息发送失败,并可重新发送; (c)如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,最好使用TCP协议,不需要服务器中转。...为了应对QQ验证登陆的并发量,短时间内响应对服务器造成的压力,我们可以采用多态服务器,将同一QQ提交到不同服务器进行验证,比如以QQ号的好两位数字,可分为100中不同类型的QQ号,这样就可实现服务器的负载均衡...我们没有必要为每一位登陆验证的用户创建服务线程,可以采用线程池的方式来进行优化。 问题十六: 你了解过数据挖掘。对这方面感兴趣? 答: 没了解过但很感兴趣。

43811

Java 与 CC++ 的编译器对比

但目前即时编译技术已经十分成熟,Java语言有可能在速度上与C/C++一争高下?要想知道这个问题的答案,让我们从两者的编译器谈起。...第三,Java语言中虽然没有virtual关键字,但是使用虚方法的频率却远远大于C/C++语言,这意味着运行时对方法接收者进行多态选择的频率要远远大于C/C++语言,也意味着即时编译器在进行一些优化(如方法内联...第四,Java语言是可以动态扩展的语言,运行时加载新的可能改变程序类型的继承关系,这使得很多全局的优化难以进行,因为编译器无法看清程序的全貌,许多全局的优化都只能以激进优化的方式来完成,编译器不得不时刻注意并随着类型的变化而在运行时撤销或重新进行一些优化...123 print(objA.x); } 确定了objA和objB并非对方的别名后,许多与数据依赖相关的优化才可以进行(重排序、变量替换)。...Java能够在运行时动态加载可以从zip包、网络、运行时计算、其他文件生成),C/C++则完全做不到这一点。

1.3K60

聊下继承与多态的区别?

浅谈C++中继承与多态的区别 众所周知,C++有三大特性和五大原则,这三大特性分别是:封装、继承和多态。然而继承和多态这两个特性是许多人容易混淆的。 今天我们就来聊聊C++中继承和多态的区别。...它可以使用现有的所有功能,并在无需重新编写原来的情况下对这些功能进行扩展。 继承的过程:从一般到特殊的过程。...一个父的多个子类可以为同一个函数提供不同的实现,从而在父这个公共的接口下,表现出多种行为。 多态的使用场景:当之间存在层次结构,并且之间是通过继承关联时。...这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的,它们(那些操作)可以通过相同的方式予以调用。 在C++中,多态性的实现和联编(也称绑定)这一概念有关。...当调用这些方法体时就需要利用C++的多态性质,根据对象的特性有选择的对方法进行调用。即多态是在不同继承关系的对象,去调用同一函数,产生了不同的行为。 其它干货 算法岗,不会写简历?

4.8K20

12道囊括重要的东西的 Java 基础问题

•都是面向对象的语言,都支持封装、继承和多态;•Java 不提供指针来直接访问内存,程序内存更加安全;•Java 的是单继承的,C++ 支持多重继承;虽然 Java 的可以多继承,但是接口可以多继承...在讲继承的时候我们就知道父的私有属性和构造方法并不能被继承,所以 Constructor 也就不能被 override(重写),但是可以 overload(重载),所以你可以看到一个中有多个构造函数的情况...抽象必须要有抽象方法?抽象使用 final 修饰? 接口和抽象的区别是什么?...如果同时实现两个接口,接口中定义了一样的默认方法,则必须重写,不然会报错。 抽象必须要有抽象方法? 抽象中不一定包含抽象方法,但是包含抽象方法的一定要被声明为抽象。...抽象使用 final 修饰? 抽象不能用final来修饰。当用final修饰一个时,表明这个不能被继承。

52630

为什么王者荣耀不使用微服务架构?

最近,在知乎上看到这样一个问题:"为什么游戏公司的 server 不愿意微服务化?"...他很惊讶的说,我没听说过微服务耶,你可以解释一下?...陈宏基的回答 比如 moba 游戏/王者荣耀/LOL,就看王者荣耀的客户端吧,想象一下。...streaming 本身就是加入了状态 我可以想像,为了提高通讯的性能,一场英雄联盟游戏很可能会使用同一个服务器负责这 10 个玩家之间的通讯,这样就使得数据可以在本地交换,性能最大化 。...固然,我们可以使用协程,C++可以,那么编码复杂度有考虑过?而且大量的异步编程在游戏服务器上面是很困难的,也就意味着需要更多的游戏服务器开发人员,而且还得要求开发人员的综合素质不能太差。

18510

最最最常见的Java面试题总结——第二周

StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。...String为什么是不可变的?...下面只是给大家看两个有代表性的例子: 1) String不可变但不代表引用不可以变 String str = "Hello"; str = str + " World"; System.out.println...Java和C++的区别 我知道很多人没学过C++,但是面试官就是没事喜欢拿咱们Java和C++比呀!没办法!!!就算没学过C++,也要记下来!...都是面向对象的语言,都支持封装、继承和多态 Java不提供指针来直接访问内存,程序内存更加安全 Java的是单继承的,C++支持多重继承;虽然Java的可以多继承,但是接口可以多继承。

53020

分享:6个公司大数据岗位的面试经验

C++?...但似乎对方没有理解和听懂,表情带着不理解和质疑,半天从他嘴里吐出一个结论:你们不用JAVA写算法是因为你们公司搞算法那帮人只用C/C++去搞。...我当时有点无语,不知道该怎么跟这种对CV算法一无所知的人解释(或许我该说很多算法库都是C/C++写的,让你用JAVA调用cuda的库你累不累),但对方又接着问下一个问题,你怎么看待大数据领域接下来的发展趋势...这个答得的确不好,有点以偏概全了,对方显然对我这个回答很不满意,又问你认为磁盘IO性能会是瓶颈?...,没有可以再拆分的,他说就是要拆分成2个模块,我表示不知道他脑袋里怎么想的,说不知道。

1.2K10

干货|6个公司的大数据岗位的面试经验

C++?...但似乎对方没有理解和听懂,表情带着不理解和质疑,半天从他嘴里吐出一个结论:你们不用JAVA写算法是因为你们公司搞算法那帮人只用C/C++去搞。...我当时有点无语,不知道该怎么跟这种对CV算法一无所知的人解释(或许我该说很多算法库都是C/C++写的,让你用JAVA调用cuda的库你累不累),但对方又接着问下一个问题,你怎么看待大数据领域接下来的发展趋势...这个答得的确不好,有点以偏概全了,对方显然对我这个回答很不满意,又问你认为磁盘IO性能会是瓶颈?...,我答得不是很好,但应该还过得去,然后又问Concurrent包下面有哪些,ConcurrentHashMap与HashMap区别等等。

91250

分享:6个公司大数据岗位的面试经验

C++?...但似乎对方没有理解和听懂,表情带着不理解和质疑,半天从他嘴里吐出一个结论:你们不用JAVA写算法是因为你们公司搞算法那帮人只用C/C++去搞。...我当时有点无语,不知道该怎么跟这种对CV算法一无所知的人解释(或许我该说很多算法库都是C/C++写的,让你用JAVA调用cuda的库你累不累),但对方又接着问下一个问题,你怎么看待大数据领域接下来的发展趋势...这个答得的确不好,有点以偏概全了,对方显然对我这个回答很不满意,又问你认为磁盘IO性能会是瓶颈?...,没有可以再拆分的,他说就是要拆分成2个模块,我表示不知道他脑袋里怎么想的,说不知道。

1.5K70

“找个心动的人就辣么难嘛 ;” 别灰心,试试用了AI的Tinder

C语言攻城狮看不起写C++,写C++的看不起Java。语言一没选好,很容易掉到鄙视链的底层。 不过始终有一人,笑看众生,常年屹立于鄙视链的顶端。 辣就是有女票的攻城狮。 扎心了吧。...不过有用户反映,看到怪怪的人点“喜欢”自己,心里会发毛,或者即使确实觉得对方妹纸不错,也倾向于不点“喜欢”,因为担心自己点了之后,对方不会来勾搭,显得自己没有魅力,所以不想给别人一个拒绝自己的机会(大家内心戏都好多...而新开发的“超级喜欢”功能,点“喜欢”更像是个多选一的游戏,而不再有那种两个人在一个屋子,选或不选都让对方直接知道的尴尬。...一般来说,Tinder试用用户每天只会收到一次“超级喜欢”的卡片,付费用户呢一天可以收到5次。...超级喜欢只是很多算法中的一个,我们也一直在不断提高用户在App里面的使用体验。” Tinder现在日活用户有2600万,匹配成功多达200亿次,累积了五年多的经验值。

721100

一次有意义的前端面试总结

,在某个技术论坛上看到这个公司招聘前端工程师,我便通过Email投了一份简历过去,几天后对方回复了我一份邮件,大意是问我何时有空去面试,我当时还在江西老家,告知对方我要在正月十五才会去深圳后,对方很爽快的表示我到深圳后再告知对方...还有一题要求写出add(4)(5)的实现函数,看到这题后我一脸懵逼,函数不都是只有一个括号,这里怎么出现了两个括号,面试结束后我通过在一个前端交流群里问了这个问题,这题考察的是函数柯里化,还有一题要求使用...面试官:知道 rem 和 em ,他们两个有什么区别? 我:rem表示的是相对于网页的根节点然后巴拉巴拉一大堆。 面试官:知道原型?...我:一脸懵逼,后来不知怎么回事就想起来了,我顺便问了一句是指两个元素,一个在上面一个在下面,两个元素的距离为那个margin值大的那个元素的margin值? 面试官:如何解决这个问题?...我:你能不能在纸上写一下(当时没听懂),两个可以让对象调用函数,其中apply中的第一个参数为调用函数的对象,第二个参数为函数传递的数据,其中apply传递数据是数组,call巴拉巴拉。

39020

C++应该怎么学

任何一种历史厚重的文化理解起来都不太容易,从C++身上,能看到计算机语言进化的影子。...理解这段代码,需要知道这两个细节。 例2 重载是C++里很重要的语法,包括函数重载、运算符重载。 问题:关键字 new delete能重载?重载的机制是什么?...new delete关键字是可以重载的,分全局重载和范围重载,上面这个例子演示的是范围重载。重载后编译器会优先使用你重载的实现。还有很多细节,后续的文章会详细展开。...3)debug模式下内存的分布一样? 4)每个编译器对内存的处理是一样? 例4 一个complex,有两个double字段 上图左边呈现的是debug模式下的内存。...可以看到c++开发者对新特性的拥抱热情。 随着c++使用的深入,后续每一个模块你都需要花时间系统性的学习,而不是简单的google/baidu一下就能掌握。

54220

CVTE2016春季实习校招技术一面回忆(C++后台开发岗)

问题五: 子进程可以访问父进程的变量? 答: 子进程可以访问父进程变量。...问题六: 除了使用fork产生子进程,还有其它的方法? 答: 我当时说没有了,竟然把vfork()给忘记了。...(4)共享内存(Shared Memory)——最快的IPC方式,同一块物理内存映射到进程A、B各自的进程地址空间,可以看到对方的数据更新,需要注意同步机制,比如互斥锁、信号量。...具体实现可参考:两个栈实现一个队列。 问题十二: 延伸一下,类似问题,如何使用两个队列模拟出栈?...以及使用引用的注意事项? 答: 《C++高级进阶教程》中指出,引用的底层实现由指针按照指针常量的方式实现,见:C++引用的本质。 非要说区别,那么只能是使用上存在的区别。

58511

为什么子类引用不能指向父对象

在java、C++等面向对象的语言中,实现多态的方式就是使用引用指向子类对象,所以父引用指向子类对象是没有任何为题的,但是,大家有没有想过,子类引用可以指向父对象?答案是不可以!...下图是在java中,使用子类引用指向父对象的情况 ? 编译可以通过,因为对生成的Person对象做了一个强制转换,骗过了编译器,其本质上还是属于子类引用指向父对象。...接下来,我们来看一下,下面两行的反汇编代码,因为Student继承于Person,因此Student里面有age和stuId两个变量,又因为是公有的,所以stu可以访问这两个变量的地址,我们对这两个值进行赋值操作...这两个赋值操作的反汇编代码如下,可以明显看出,它们都是先找到stu指向的Person对象的堆空间首地址,然后当给age赋值为18时,是把12h(18的十六进制)塞给Person对象首地址位置开始的4个字节...大家可以看到上图,很明显,相信大家就看出问题来了。。

2.4K31

Java--和对象之句柄、作用域

句柄和对象的关系就像电视机和遥控器的关系,我们通过遥控器来操纵电视机,但它们两个可以脱离对方独立存在的。其外,我们平时是拿着遥控器到处走动而不是电视机。...//创建句柄 String s; //创建对象并和句柄链接 s = new String("abcd"); 既然对象和句柄是可以独立存在的,那么就有作用域问题了: Java中主类型的作用域的有效范围和C...++一样,除了下面这种情况: int x = 10; { int x = 0; } C++中此语法合法,即C++可以将一个变量隐藏在一个更大的作用域中;而Java中会认为重复定义报错。...创建对象数组时,实际上是创建的句柄数组,每个句柄会初始化为一个特殊值并有自己的关键字null, 试图使用为null的句柄,则会报错。 由数据成员(字段)和成员函数(方法)组成。...static(静态)关键字:一旦将什么东西设为static,数据或方法就不会同那个的任何对象实例联系到一 起。我们可以通过实例出来的对象访问该静态数据或方法,更重要的是也可以直接通过名访问。

1.1K60
领券