C、C++和C#的关系,以“把大象放进冰箱里”举例
最近得用unity
做虚拟仿真相关的东西,当然,它的知名还是在游戏界,像王者荣耀就是使用 unity 开发的。
使用unity
就要学习C#
语言,我一直以为C#是C++的升级版本,因为C++是C的改进版,但是C#
与前两者的关系就相当于Java
和JavaScript
,没半毛钱关系。
C语言
C
语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。 C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
并且它是一门十分优秀而又重要的语言,Window,Liunx,UXIX系统都是使用C语言编写的,可见他的重要程度。
C++
C++
是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
它被认为是一种中级语言,综合了高级语言和低级语言的特点。
OOP(面向对象)语言特点:
- 封装性:一个手机是由很多部件构成的,有处理器,存储器,输入输出设置,屏幕,电池等,把这些东西组装在一起就是手机了,这就是封装性。
- 继承性:老子生了儿子,儿子继承了老子的特性,就有了继承性。
- 多态性:我在家是父母的儿子,在公司是老板的员工,在深圳就是深圳人,在面向对象的语言中,调用相同的方法会有不同的行为,这就是多态。
C Sharp
又叫C#
,是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由Ecma 和ISO 核准认可的。
至于它的命名,我们来看看起源:
- 微软为了挽救
Visual Basic
未完成的事业 - 抄袭
jxx
语言并起名为j++
- 被吃官司后,学聪明了,谎称自己是C语言的改进
- 命名为
C#
对,抄袭的就是Java
语言,现在的C# 和 Java有着惊人的相似。
三者的关系
经典案例:把大象放到冰箱里
C:
C语言是一个极其高冷的人,因此回答都是冷冷的:
我:你好C语言,我想把大象放到冰箱里,帮我做好不好?
C:好
我:那我们要怎么做呢?
C:猜
我:额。。。是不是应该先创造一只大象?
C:是
我:怎么创造呢?
C:猜
我只好去翻了一下文档,哦,malloc一块内存啊。
我:好的,我用malloc,申请一块空间放大象好不好?
C:好
我:额。。。大象怎么构造呢?
C:猜
我。。。去看了看大象的结构
我:好吧。。。我定义了一个大象的数据结构,接下来怎么做?
C:猜
我心里一阵说不出的感觉。。。
我:哦好吧,我创造一个冰箱,步骤应该和大象差不多。
C:嗯
我翻看了冰箱的结构,然后定义了一个冰箱的struct。
我:好了,冰箱构造出来了,怎么放呢?
C:哼
我。。。默默在Stack Overflow上输入如何把大象放进冰箱 C。
我:终于找到答案了,定义一个方法,把大象的鼻子放进去、眼睛放进去、耳朵放进去。OK,都放进去了。C,你输出一下看看吧。
C:烫烫烫烫烫烫烫
我:哈哈哈哈C你终于不高冷了
。。。
我:哎,你咋不说话了?C?你发烧了吗?
立刻一盆水倒上去。
结束。
C++:
C++是一个知识渊博的孩子,相对年轻,也没那么高冷。
我:C艹,我们把大象放冰箱好吗?
C++:滚
说话的不高冷呢?
我:额我错了,亲爱的C++,我们把大象放冰箱好吧。
C++:好的么么哒,大象的数据类型已经有人定义好了,冰箱也有人定义好了,你需要分别构造一个哦。
我:好的。
于是我翻看了文档后知道了用new来构造
我:OK,亲爱的C++,我想构造一个大象。
C++:好的,构造大象的方法有13个,请问你选择哪一种呢?
我。。。
我:你介绍一下吧。
C++:OK,首先可以在栈上面构造,这么做的好处呢是可以方便资源管理,而且语法也好看一些,可以利用RAII,如果你不知道什么事RAII,你可以去cppreference上面查一下,当然你也可以在堆上构造,可以构造一只很大很大的大象,还有。。。。。。。
一个月过后,C++终于讲完了。我也长满了胡须。。。刮了胡子之后继续工作
我:好的,C++,我就在栈上面构造一只大象吧。
C++:你不爱我了。
我:???
C++:你都没有说“亲爱的”。
我。。。
我:好吧,亲爱的C++,我想简单构造一只大象。
C++:好的呢,你可以选择构造一只非洲象还是美洲象还是南极洲象,象的肤色是什么样子的你可以设定一下,象的屁股大小你可以设定一下,象的性别和性取向你看要什么。。。。。。
我:我就想要一只简单的,默认的就好。
C++:好的,构造出来了一只,你可以选择怎么初始化它,有13种初始化方法,推荐使用最新的统一初始化。
我。。。
我:统一初始化
C++:好的,我们可以构造冰箱了。
我:好。。。
经过一个月的选择,终于构造出了冰箱。
C++:好的,冰箱提供了addElephant方法,可以直接使用哦。
我:哇太棒了,好的,我就用这个方法。
C++:这个方法提供了多种重载,可以拷贝,移动,也可以直接转发,省的在移入冰箱之前构造一个大象。
我:。。。你为啥不早说
C++:你为啥不早问。
我:就用移动的吧。
C++:OK,请用std::move将构造好的大象转为右值引用。
我一脸懵,但是还是照办。
我:好了
C++:OK,开始放入冰箱了哦,速度极快的呢。
突然
C++:报错了报错了,分子和原子不是可以转换的类型,大熊猫和爱迪生之间没有+运算符等1556项错误。
我。。。。。。。。。
我:网上找资料,说看最后一行就差不多了,好的看看。嗯,看起来是第31行出错了,错误是什么呢?报错信息啥也没说明白啊。随便改改吧。编译,运行。
C++:好的,已经将臀围12米,左臂长13米,右臂长14米,喜欢公大象,没有结婚生子,从小家教不错,熟读四书五经的非洲母大象放入橘黄色,五十米高,六十米宽,三百米厚,温度有零下三百度,制冷剂的牌子是湖澈牌,额定电压220V的冰箱里。
我。。。长舒了一口气。
C#:
我:我想把大象放进冰箱。
C#:好的主人,我爸爸微软已经写好了大象类,也写好了冰箱类,你只需new一下就好了。
我:OK,new好了,放入冰箱。
C#:好的,已经放入,使用了冰箱的拓展方法addElephant<>方法。
我:嗯,你表现得很好,能不能放的稍微快点儿,刚刚C++放的就很快。
C#:为了您的安全,不能。
我:额。。。那我想调节一下大象耳朵的尺寸。
C#:对不起,不能调节。您可以设定大象的耳朵形状,已为您定义好多种耳朵形状,您还可以调整大象的肤色,已为您定义好多种肤色。
我:算了不调了,就这样吧。
C#:好的。如果您需要速度,或者需要对大象的每个细节进行把握,还可以去看看我的弟弟,C++/CLR,他可以完成您提出的这些功能。您也可以将他带到我这里来,我们可以一起工作的。你也可以把C++完成的工作导出到二进制形式,我可以直接使用的。
我:好的谢谢,不用了。
C#:好的,祝您生活愉快。
完!
您的点赞、评论、关注是对小编最大的鼓励 O(∩_∩)O
C、C++和C#的关系,以“把大象放进冰箱里”举例相关推荐
- 报告显示:风险环境和外挂类型关系密切 加速器外挂在模拟器环境里最多
近日,国内领先的手游反外挂服务商网易易盾对外发布了<2019年手游反外挂报告>(以下将简称"报告"),依靠其丰富的数据和深入的洞察,报告全面地呈现了手游外挂的真实情况. ...
- 游戏环境检测_报告显示:风险环境和外挂类型关系密切 加速器外挂在模拟器环境里最多...
近日,国内领先的手游反外挂服务商网易易盾对外发布了<2019年手游反外挂报告>(以下将简称"报告"),依靠其丰富的数据和深入的洞察,报告全面地呈现了手游外挂的真实情况. ...
- 面向对象类与对象的关系
1.面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能.行为 面向对象:将功能封装进对象,强调具备了功能的对象 面向对象是基于面向过程的 面向过程例子: 把大象 ...
- 汽车电子之功能安全产品设计过程
汽车电子之功能安全产品设计过程 内容来自 驱动视界 学习为主. 1.概念阶段 2.系统阶段 3.硬件层面 4.软件层面 5.3"V" 6.大追溯关系 随着电动化.智能化的发展,越来 ...
- 第三章 面向对象(上)
目录 面向对象思想 类与对象及其使用 对象的内存图 成员变量和局部变量的区别 匿名对象 封装(private) this关键字 构造方法 static关键字 一.面向对象思想 1.面向对象思想引入 前 ...
- 面向对象(封装,this,static,代码块)
1.面向对象的思想 面向对象的思想是基于面向过程的编程思想 面向过程:强调的是每个功能的实现步骤 (参与者) 面向对象:强调的是对象,然后由这个对象去调用方法(指挥者) 2.面向对象的特 ...
- 浅谈控制反转(IoC)
Inversion of Control 什么是控制反转? 程序的流程控制权相对于传统的面向过程编程而言发生了反转.下面是维基百科的描述 In software engineering, invers ...
- 看我们如何“把大象放进冰箱里”
一.数学家的办法 转自MITBBS 把大象放到冰箱里的分析学方法 1)先把大象微分,然后把它放到冰箱里,再在冰箱里把它积分. 2)重新定义冰箱或者大象的测度(如Radon测度). 3)用Banach- ...
- 多看一眼多进步,python入门到放弃
python相关工具都安装完成后,就可以开始学习了,以下在pycharm中,以下学习内容来自b站边学习边整理的笔记,好记性不如赖笔头,多总结多记录,总是不错的 print()函数的使用 print函数 ...
最新文章
- 推荐一本书给大家《不懂带人 你就自己做到死》
- Visual Studio 2013开发 mini-filter driver step by step (1) - 创建 mini filter driver 工程
- LineageOS编译
- python 多线程 模块_Python多线程threading和multiprocessing模块实例解析
- Kuroni and Impossible Calculation CodeForces - 1305C(鸽巢原理)
- 如何先执行input (checkbox,radio)再执行函数
- php简单的用户留言板实现内容(1-23)
- 西电计算机学院导师苗启广,Xidian Media Lab
- 创建优秀团队文化的四大要点
- PclZip:强大的PHP压缩与解压缩zip类
- iOS多线程系列之GCD栅栏(barrier)实现同步锁
- 机器学习之特征选择方法
- esxi 环境 西数硬盘测试软件,西数硬盘原厂检测工具(Western Digital Data LifeGuard Diagnostics)...
- 因果系列文章(1):因果推断及相关论文
- Keil5 点击Debug Setting 软件崩溃解决方法
- 织梦如何更改默认的后台登录账号和密码(亲测可用)
- 人工智能刷题(个人向)
- 目标跟踪论文(一):SiamFC孪生网络
- 基于若依系统进行模块化开发(使用eclipse)
- 常用的URL Scheme
热门文章
- 如何实现一个 Paxos
- 采集POCO多个相册图片的方法步骤
- 亚马逊公司(Amazon)
- Pytorch 0号卡占用问题
- 转载--编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议11~15)...
- “王鹏你妹”让人笑不起来
- 计算机桌面造句四年级,桌面造句 - 用桌面造句大全(10-500个例子) - 第 2 页
- word写论文的一些格式
- CMOS单刀单掷开关(SPST)笔记
- Proteus仿真——16线-4线仿真电路图