百科问答小站 logo
百科问答小站 font logo



为什么C++中virtual要翻译为虚函数? 第1页

  

user avatar   wang-shan-44-7-60 网友的相关建议: 
      

有个IBM的广告,上面是这样写的:

如果你可以看见一样东西,并且它就在那边,那么它就是真的。

如果你可以看见一样东西,并且它实际上不存在,那么它就是虚拟的。

如果你看不见一样东西,并且它就在那边,那么它就是透明的。

如果你看不见一样东西,并且它不在那边,那么是因为你把它删除了。

If you can see it and it's there, then it's real. If you can see it and it's not there, then it's virtual. If you can't see it and it's there, then it's transparent. If you can't see it and it's not there, then you erased it. -- An IBM ad


我们先来看Virtual的定义,一个东西要是Virtual的,那么必须是:看得见,但是实际上并不真正存在,比如用K98吃鸡。

Virtual reality,虚拟现实,带了Oculus头盔看到了“现实”,但是实际上那个“现实”是虚拟出来的,并不真正存在。

Virtual private network,VPN虚拟专用网,建立了VPN通道后,远程的设备能像本地局域网一样访问,但是实际上那个设备并不在本地局域网里。

Virtual serial port,虚拟串口,用VSPD虚拟串口软件虚拟了串口后,可以当做真的串口设备连上去通信,但是实际上那个串口设备是虚拟出来的,并不真正存在。

Virtual device,虚拟设备,在云端虚拟出来的物联网设备,它可以可视化显示现场对应设备的实时数据、设备元数据模型、告警、位置信息。

Virtual state,虚拟状态,根据物联网设备上传的多个数据项值,按照设定的算法计算出的设备状态。这个可以用来监控物联网设备的状态。

Virtual fence,虚拟围栏,也叫Geofence地理围栏。在M2M物联网应用中,用户可以在GIS地图上标记一个虚拟的范围,如圆形、长方形、多边形或者路线。如果设备上传的GPS位置信息超出了标记的范围,就会自动发送告警通知。

Mobile virtual network operator,MVNO虚拟网络运营商,从基础运营商那里承包一部分通讯网络的使用权,然后通过自己的计费系统、客服号、营销和管理体系把通信服务卖给消费者在运营商之上基于运营商提供的服务。例如,物联网网关企业通过调用运营商的API接口,就可以轻松实现物联网SIM卡的计费查询、充值、告警等业务。

Mobile virtual network enabler,给MVNO虚拟网络运营商提供所需的计费、客服、营销和管理基础设施和服务的公司。比如思科收购的Jasper Wireless公司。

Virtual circuit,VC虚电路。在分组交换计算机网络上虚拟出一条专用的“”物理“”链路,实际上并不存在这样的一条链路。提供虚电路的协议有TCP、X.25、帧中继、ATM、GPRS、MPLS等。比如,物联网网关上集成了2G或者4G无线通信模块,那么开发人员只需要通过AT指令即可建立网关到互联网的虚拟电路。

我们再来看transparent透明的定义,一个东西是transparent的,那么必须是:看不见,但是实际上就在那里,就像哈姆莱特的被谋害的父王一样。


工控上说的透传,也就是透明传输的简称。DTU透传指的就是通过DTU在现场设备和服务器之间建立了一条通信通道,用于双向通信。对于做工控的人来说,他们因为不懂网络通信原理,就感觉不到这条链路的存在,但是实际上他们感觉到确实能传输数据,所以对他们来说这个传输就是透明的。但是对于咬文嚼字的计算机通信专业的人来说,他们会认为这条链路看得见,但是实际上并不物理上存在,所以他们会把DTU透传叫做DTU虚拟传输。


在计算机领域,如果说一个东西是透明的,那就是说系统在更改其内部行为时尽可能地遵循先前的外部接口,那么计算系统中的任何更改(例如新功能或新组件)都是透明的。这样做目的是防止更改接口另一端的所有系统(或人类用户)。比如EdgeX Foundry边缘计算框架,服务只要遵循EdgeX的API接口规范,那么变更这个服务或者更换另外一个遵循API接口规范的服务,对于用户来说是透明的。


在物联网应用中,很多时候,网关会安装在企业内网。但是网关数据需要将物联网设备数据传到外网。但是企业IT部门可能设置了透明代理服务器,所有内部到外网的请求都要通过这个透明代理服务器收发。这里透明代理的意思按照RFC2616来说,就是代理服务器不会去修改请求和响应,它只会透传经过的任何信息。网关要连接外网,就需要按照代理服务器的认证方式进行认证,认证通过后,代理服务器才会给网关提供透传服务。


user avatar   Ivony 网友的相关建议: 
      

因为virtual本来就翻译成虚拟,所以virtual function就是虚(拟)函数。


至于某些看到虚想到空无一物的人,显然是中文都没学好的。虚单字最常见的是与实相对,虚虚实实,虚则实之,实则虚之。尤其是虚修饰其他词的时候,通常就是非实在的意思。例如虚火,表示非实在的火气。虚空,非实在的空间。

所以虚在这里的意思很明确,就是表示非实在的。


虚为主语,作为被修饰的成分的时候,才有空乏,缺失的含义,例如空虚、肾虚、阴虚等……

虚拟,就是用一个非实在的东西去拟合一个实在的东西。


至于英文的virtual,就是说,看起来、用起来几乎完全一样,你可以把它当作它来用,但它仍然不是它的东西

almost or very nearly the thing described, so that any slight difference is not important

这一句话正确的理解是,他们看起来是如此的接近,以至于可以忽略他们的区别,要正确理解describe的含义。


所以,虚拟现实是什么意思?就是欺骗你所有感官的技术就是虚拟现实,因为它的核心在于让你感受上无法区分,所以就叫做virtual。virtual作为形容词的时候你都可以这么去套,所以所有的virtual XXX的含义就是,一个不管你从哪一方面来看他都是XXX,但是它事实上的确不是XXX的东西。


而事实上相同,表象不相同的,应该用actual。



所以,C++里面,virtual function是虚函数,就是一个无论从哪一方面看起来都是函数,但实现上并不是简单的进行调用的东西。

而pure virtual function,是纯虚函数,就是一个无论从哪一方面看起来都是函数,但实际上它纯粹就是看起来是个函数而已,没有任何实在的东西……


user avatar   pansz 网友的相关建议: 
      

这个问题透着一股邪乎味儿,怎么看怎么危险啊……

建议专业机构给予支援。




  

相关话题

  C 语言线程间怎么通信? 
  大一新生入学半个月,有比赛需要一个月造出红外循迹智能车,会C语言和c++,要怎么开始入门? 
  C++ 的 switch 为什么不自动加 break? 
  你有过哪些被 C++ 摧残的经历? 
  有哪些轻量级适合阅读的优秀 C++ 开源项目? 
  怎样规劝团队里的C#工作人员学习和使用JAVA? 
  C++ STL中的map用红黑树实现,搜索效率是O(lgN),为什么不像python一样用散列表从而获得常数级搜索效率呢? 
  对容器类做改变的设计是否存在天生的错误? 
  为什么说 Java 比 C++ 安全? 
  很多人说 C++ 的 MFC 已经过时了,那新入门的人到底应该学什么? 

前一个讨论
共用体只能同时储存一个值吗?
下一个讨论
c#入门书籍有推荐吗?





© 2024-06-21 - tinynew.org. All Rights Reserved.
© 2024-06-21 - tinynew.org. 保留所有权利