c语言实现继承和多态
㈠ C 与 C++ 的真正区别在哪里
C 与 C++ 的真正区别为以下几点:
才疏学浅,希望我的回答能给你带来帮助,望采纳!
㈡ 全国计算机等级考试二级c语言和C++的区别
1、本质不同
C语言用于测试考生的计算机应用知识和技能。
C++是C语言的继承。它可以实现c语言的程序化编程、抽象数据类型的基于对象编程、继承性和多态性的面向对象编程。
2、功能不同
c语扮悄言的设计目标是提供一种编程语言磨誉,它可以简单地编译、处理底层内存,只生成少量的机器代码,运行时不需要任何运行环境的支持。
C++不仅具有高效的计算机操作的实际特性,而且还致力于提高大规模编程的质量厅游渣和编程语言的问题描述能力。
3、难易程度不同
C语言是基础内容相对容易。
C++是在C语言之上的更深层次的编程语言。所以C语言好考。
㈢ C/C++语言特点是什么
(1)C语言特点:
1.作为一种面向过程的结构化语言,易于调试和维护;
2.表现能力和处理能力极强,可以直接访问内存的物理地址;
3.C语言实现了对硬件的编程操作,也适合于应用软件的开发;
4.C语言还具有效率高,可移植性强等特点。
(2)C++语言特点:
1.在C语言的基础上进行扩充和完善,使C++兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言;
2.可以使用抽象数据类型进行基于对象的编程;
3.可以使用多继承、多态进行面向对象的编程;
4.可以担负起以模版为特征的泛型化编程。
C++与C语言的本质差别:在于C++是面向对象的,而C语言是面向过程的。或者说C++是在C语言的基础上增加了面向对象程序设
计的新内容,是对C语言的一次更重要的改革,使得C++成为软件开发的重要工具。
㈣ 为什么选择RTEMS
这些问题略微的有一些复杂,我就专门写篇文章来作答。以前,我做商业项目都是使用FreeRTOS和uC/OS-II的, FreeRTOS和uC/OS-II都差不多,核心代码不过几千行。突出的特点是,好掌握,易上手,在较短的时间内就能上手开发。但是同时带来一个问题,由于驱动的缺乏,不仅仅是缺乏驱动,更缺的是,驱动的统一框架。所以设计驱动的时候,不仅仅是让相关的设备能工作,更多的是要设计一个驱动结构。对于商业项目来讲,交付完成后都是需要维护的。自己设计的驱动结构,风险和成本都比较高。需要很长的时间才能稳定下来。尤其是在需要实时性的场合。 uC/OS-II的API不丰富也是个棘手的大问题,我们的项目中,uC/OS-II,我们用C++封装了大量的系统函数,便于系统的使用。因为项目的软件架构是UML用面向对象的思想写得。利用 C语言可以实现面向对象的思想架构设计,但是要运用大量的技巧,需要用函数指针实现多态和继承。这个对编程人员来说,无端端需要了更高的技术水平。为了降低对开发人员的技术要求,使用C++做开发,与C相比,除运行效率略有些损失外,带来更多的好处。C++有严格的语法保证继承和多态,这个是C里面没有的。架构设计可直接转化为C++的框架代码,可节省不少的人力物力。然而,uC/OS-II是C函数编写的,做C++扩展,封装设计也需要不少的工作。这些都是uC/OS-II不具备的。 我们的系统颇为复杂,需要使用到TCP/IP,uC/OS-II有系统自带的uTCP/IP;选用了这个协议栈噩梦才刚刚开始。本以为这个协议栈很稳定,在使用迹凳期间,才发现协议栈有很多非常深层次的问题。1.首先有些层次支持IP分包,又有些层次不支持分包;2.TCP连接在使用一段时间后,随机出现没有FIN信号和SYN信号,导致和PC系统断链接;3.多台计算机(超过十台)同时ping协议栈,协议栈会挂掉,无法恢复;4.使用大包ping协议栈,也会出闭州燃现奇奇怪怪的问题。5.也许是我们定制水平不够,系统连续跑到7天以上后,会造成硬件的MAC层会随机挂掉,我们用同样的linux代码测试,是没有这样的问题。驱动也是极力模仿linux,但是问题解决不掉,还是会出现这样的情况。 最后头疼的问题,是uC/OS-II的授权问题,人家是开源的,商业用是要收费的。说实话,用起来没有问题,付钱我倒没啥意见,关键是问题一堆,也没啥付钱的动力和想法。失望之余,我开始寻找新的替代操作系统,一句话,就是要成熟稳定可靠。VxWorks倒是不错的选择,但是授权费用太贵了,会把我们的利润榨干;没办法干这种事情,企业要生存的。于是找到了RTEMS,这个操作系统本身的性能超过了VxWorks,不过是2005年以前测得,现在还没有大牛比较过。 我第一接触到RTEMS之后,感觉到的是“强大”! 紧接着就是“麻烦”!说强大,发展时间长,代码质量高,系统相当之稳定。我们移植到uC/OS-II相同的硬件平台上,RTEMS自带的BSD协议栈表现的相当出色,随便轿虚Ping,随便telnet,运行了十几天,相当之稳定。丝毫没有颓势;API函数相当的丰富,也有一套成熟的驱动结构。(和Linux比起来还是有些简陋,但是足够用了)完善的C++封装。同时 RTEMS是开源免费,使用的发布协议是使用了RTEMS,你高兴公开你的代码你就公开,不高兴公开就不公开(严格的来说不是这样,但最终的效果是一样的)。 欣喜之余,问题来了,麻烦!由于使用GNU的工具链,对于使用windows下集成开发环境的团队来说,那是相当的麻烦。不仅仅因为需要装虚拟机在linux下开发,rtems的调试跟踪,代码撰写等等,都需要用单独的工具完成,对人员的素质要求很高。细节也非常的多,一不小心,埋下伏笔,呵呵,那就是给自己找麻烦了。再者,就是RTEMS的学习资料少得可怜,中国实际上潜在的研究人员非常多,但他们不愿意也没时间把自己的研究公布出来;国外的话只有官方的文档有些介绍。且介绍中的疏漏相当的多,需要潜心的研究。 毕竟全世界专职维护RTEMS的人就那么几个,需要用google summer code推动一些周边项目,并不像VxWorks那样面面俱到的商业项目,什么都是完美的。也正因为这些瑕疵,更显得RTEMS的可贵。 对于我来说,选择RTEMS,只是想应用于我的项目,我的产品。然而,从学习的角度来说,比那些集成化的工具来说,能学习到更多的东西,从深层次了解嵌入式系统的开发。IAR EWARM、RVDS这样的工具用熟了,不代表就可以把GNU玩转了,但把GNU玩转了,集成环境一定是没有问题的。所以,对广大的学生朋友来说,RTEMS是一个不错的,提升自己全方面能力的东西。不过,学习难度稍微有些大了,介绍资料又少,的确是有问题。 前阵子,看到一个笑话是,上世纪80年代只有资本主义才能救中国,上世纪90年代只有中国才能就亚洲,现在只有中国才能救世界。中国由中国制造变为中国创造,需要更多的软实力;中国如火如荼的物联网技术,通讯模块、操作系统、芯片都是国外的,中国搞的是物联网协议规范,试问,你都没有自己的东西,凭什么人家要尊重你的游戏规则?所谓的物联网,只不过是中国人的一厢情愿。说不好听的,掩耳盗铃而已。
㈤ cin>>n在c语言是什么意思
C++中的cin>>x等价于C语言里的 scanf//从键盘输入一个整数放在变量x里。
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数搏悉据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
在C++中,类是余正支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。
在面向对象的程序设计中,将数据和基毁乎对该数据进行合法操作的.函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。
每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。
㈥ C语言是怎样实现封装,继承,多态的
封装,继承,多态的是C++的面向对象的特性,C语言不具备这些特性。
㈦ c++ 的特点是什么c++ 的特点是什么谈谈它的多态性。
C++是以C语言为基础,支持数据抽象和面向对象的程序设计语言。C++对C语言的扩充部分汲取了
许多着名语言中最优秀的特征,如从Algo168中吸取了操作符重载机制等。由于C++语言具有与C语言一
样的高执行效率,并容易被熟悉C语言的软件人员接受,因而很快得以流行。但这种混合型面向对象的
程序设计语言是一种新的程序设计语言,人们对它许多潜在的性能(封装、继承、多态等)还没有充分
地理解和应用,没有充分发挥其优势。多态性是面向对象系统的重要概念之一,它指的是同样的消息
能被发送到父类的对象和它的子类的对象。本文重点讨论多态性在程序设计中的应用。
1 多态性的实现形式
从广义上说,多态性是指一段程序能够处理多种类型对象的能力。在C++语言中,这种多态性可以
通过强制多态、重载多态、类型参数化多态、包含多态4种形式来实现。类型参数化多态和包含多态统
称为一般多态性,用来系统地刻画语义上相关的一组类型。重载多态和强制多态统称为特殊多态性,
用来刻画语义上无关联的类型间的关系。
包含多态是指通过子类型化,1个程序段既能处理类型T的对象,也能够处理类型T的子类型S的对
象,该程序段称为多态程序段。公有继承能够实现子类型。在包含多态中,1个对象可以被看作属于不
同的类,其间包含关系的存在意味着公共结构的存在。包含多态在不少语言中存在,如整数类型中的
子集构成1个子类型。每一个子类型中的对象可以被用在高一级的类型中,高一级类型中的所有操作可
用于下一级的对象。在C++中公有继承关系是一种包含多态,每一个类可以直接公有继承父类或多个父
类,如语句class D�public P1,public P2{……};表示类D分别是类P1和类P2的子类型。
类型参数化多态是指当1个函数(类)统一地对若干类型参数操作时,这些类型表现出某些公共的语
义特性,而该函数(类)就是用来描述该特性的。在类型参数化多态中,1个多态函数(类)必须至少带有
1个类型参数,该类型参数确定函数(类)在每次执行时操作数的类型。这种函数(类)也称类属函数(类)
。类型参数化多态的应用较广泛,被称为最纯的多态。
重载是指用同一个名字命名不同的函数或操作符。函数重载是C++对一般程序设计语言中操作符重
载机制的扩充,它可使具有相同或相近含义的函数用相同的名字,只要其参数的个数、次序或类型不
一样即可。例如:
int min(int x,int y); //求2个整数的最小数
int min(int x,int y,int z); //求3个整数的最小数
int min(int n,int a〔〕); //求n个整数的最小数
当用户要求增加比较2个字符串大小的功能时,只需增加:
char*min(char*,char*);
而原来如何使用这组函数的逻辑不需改变,min的功能扩充很容易,也就是说维护比较容易,同时也提
高了程序的可理解性,“min”表示求最小值的函数。
强制是指将一种类型的值转换成另一种类型的值进行的语义操作,从而防止类型错误。类型转换
可以是隐式的,在编译时完成,如语句D=I把整型变量转换为实型;也可以是显式的,可在动态运行
时完成。
从总体上来说,一般多态性是真正的多态性;特殊多态性只是表面的多态性。因为重载只允许某
一个符号有多种类型,而它所代表的值分别具有不同的、不相兼容的类型。类似地,隐式类型转换也
不是真正的多态,因为在操作开始前,各值必须转换为要求的类型,而输出类型也与输入类型无关。
相比之下,子类与继承却是真正的多态。类型参数化多态也是一种纯正的多态,同一对象或函数在不
同的类型上下文中统一地使用而不需采用隐式类型转换、运行时检测或其它各种限制。
2 多态性应用
2.1 包含多态
C++中采用虚拟函数实现包含多态,虚拟函数为C++提供了更为灵活的多态机制,这种多态性在程
序运行时才能确定,因此虚拟函数是多态性的精华,至少含有一个虚拟函数的类称为多态类。包含多
态在程序设计中使用十分频繁。
派生类继承基类的所有操作,或者说,基类的操作能被用于操作派生类的对象,当基类的操作不
能适应派生类时,派生类需重载基类的操作,见下例中的void circle::showarea()。
#include <iostream.h>
class point //屏幕上的点类
� {int x,y;
public;
point(int x1,int y1)
{x=x1;y=y1;}
void showarea()
{cout<<〃Area of point is:〃<<0.0<<endl;}
};
class circle:public point//圆类
{int radius;
public:
circle(int x,int y,int r):point(x,y){ radius=r;}
void showarea(){cout<<〃Area of circle is:〃<<3.14
*radius*radius<<endl;}
};
void disparea(const point*p) //多态程序段
{p->showarea();}
void main()
{circle c1(1,1,1);disparea(&c1);
}
程序的运行结果为0.0(正确结果应为3.14),出错的原因是:表达式p->showarea()中的函数调
用在编译时被束定到函数体上,使得这个表达式中的函数调用执行point类的showarea()。为此,当程
序员在实现一个派生类而变动了基类中的操作实现时,C++提供的虚函数机制可将这种变动告诉编译器
,即将关键字virtual放在类point中该函数的函数说明之前(virtual void showarea()),程序其它部
分保持不变(circle::showarea()自动地成为虚函数),编译器就不会对函数调用p->showarea()进
行静态束定(在编译/连接时进行的束定)而产生有关的代码,使函数调用与它所应执行的代码的束定
工作在程序运行时进行,这样上述程序的运行结果即为3.14。在程序运行时进行的束定被称为动态束
定。
利用虚函数,可在基类和派生类中使用相同的函数名定义函数的不同实现,从而实现“一个接口
,多种方式”。当用基类指针或引用对虚函数进行访问时,软件系统将根据运行时指针或引用所指向
或引用的实际对象来确定调用对象所在类的虚函数版本。
C++语言还增加了纯的虚函数机制用来更好地设计包含多态性。对于如图1(a)所示结构的类层次,
假如每个类中都有一个函数“void display(void);”,那么,怎样对它们按多态性进行统一处理呢
?对这类问题应先设计一个抽象的类,使它成为所有类的祖先类,如图1(b)所示。设置类A的目的是由
它说明统一使用该层次中的display()函数的方法(赋值兼容规则从语法上保证了A的子孙类可按A说明
的方式使用display()函数;多态性则从语义上保证了在执行时,根据实际的对象访问相应对象类中的
display()函数)。
为了保证在类A中设置的display()函数是抽象动作,并能说明类A是一个抽象的类,在C++中,可用纯
的虚函数语言机制在类A中声明1个成员函数“virtual void display(void)=0;”。请注意,在类A
的子孙类中要么给出display()的定义,要么重新将该函数声明为纯的。
从上面的分析可以看出,类A的设计尽管是用继承性语法表达的,但它的主要目的不是为代码共享而设
计的,而是为了提高多态性而设计的,它是另一个维度的抽象。
2.2 类型参数化多态
参数化多态又称非受限类属多态,即将类型作为函数或类的参数,避免了为各种不同的数据类型
编写不同的函数或类,减轻了设计者负担,提高了程序设计的灵活性。
模板是C++实现参数化多态性的工具,分为函数模板和类模板二种。
类模板中的成员函数均为函数模板,因此函数模板是为类模板服务的。类模板在表示数组、表、
矩阵等类数据结构时,显得特别重要,因为这些数据结构的表示和算法的选择不受其所包含的元素的
类型的影响。下面是一个通用数组类模板的定义。
template <class T,int N>
class array
{T elem〔N〕;
public:
array(){for(int j=0;j<N;j++)elem〔j〕=0;}
T& operator〔〕(int index){return elem〔index〕;}
void modi(int index,T value){elem〔index〕=value;}
};
其中,T是类型参数,N是常量参数。T和N的实际值是在生成具体类实例时指定的。类模板的< >
可以包括任意个类型参数或常量参数,但至少应有一个参数。在类模板定义中,可在程序中通常使用
类型指定的任何地方使用类型参数,可在通常使用特定类型常量表达式的任何地方使用常量参数。
成员函数模板可放在类模板中定义,也可放在类外定义,例如:
template <class T,int N>
T& array<T,N>::operator〔〕(int index){return elem〔index〕;}
当由类模板生成一个特定的类时,必须指定参数所代表的类型(值)。例如,1个元素类型为int、
长度为100的数组类使用类型表达式array<int,100>来表示,这个类型表达式被用于说明数组类对
象。例如:
array<int,100> a: //生成特定类的对象a
a.modi(1,34); //对象a访问成员函数
类模板一旦生成了对象和指定了参数表中的类型,编译器在以后访问数据成员和调用成员函数时
完全强制为这些类型。
在C++中可以重载定义多个同名的函数模板,也可以将1个函数模板与1个同名函数进行重载定义。
例如:
template <class T> T min(T a,T b){return a<b?a:b;}
template <class T>
T min(T a,T b,T c){T x=min(a,b);return min(x,c);}
int min(int a,int b)〔return a<b?a:b;}
调用min(3,7),则调用第3个函数;调用min(3.8.5.9),编译器将根据带2个参数的模板生成新函
数min(double,double);调用min(4,90,76),则编译器根据带3个参数的模板生成新函数min(int,
int,int);而调用min(56.3,48,71),编译将给出错误信息,说明无法从上面的模板中生成函数
min(double,double,double),因为编译器在类型推导时,不存在类型强制。
模板描述了1组函数或1组类,它主要用于避免程序员进行重复的编码工作,大大简化、方便了面
向对象的程序设计。
2.3 重载多态
重载是多态性的最简形式,而且把更大的灵活性和扩展性添加到程序设计语言中,它分成操作符
重载和函数重载。
C++允许为类重定义已有操作符的语义,使系统预定义的操作符可操作类对象。C++语言的一个非
常有说服力的例子是count对象的插入操作(<<)。由于其类中定义了对位左移操作符“<<”进行重
载的函数,使C++的输出可按同一种方式进行,学习起来非常容易。并且,增加一个使其能输出复数类
的功能(扩充)也很简单,不必破坏原输出逻辑。
C++规定将操作符重载为函数的形式,既可以重载为类的成员函数,也可以重载为类的友员函数。
用友员重载操作符的函数也称操作符函数,它与用成员函数重载操作符的函数不同,后者本身是类中
成员函数,而它是类的友员函数,是独立于类的一般函数。注意重载操作符时,不能改变它们的优先
级,不能改变这些操作符所需操作数的个数。
重定义已有的函数称为函数重载。在C++中既允许重载一般函数,也允许重载类的成员函数。如对
构造函数进行重载定义,可使程序有几种不同的途径对类对象进行初始化。还允许派生类的成员函数
重载基类的成员函数,虚函数就属于这种形式的重载,但它是一种动态的重载方式,即所谓的“动态
联编(束定)”。
2.4 强制多态
强制也称类型转换。C++语言定义了基本数据类型之间的转换规则,即:
char->short->int->unsigned->long->unsigned long->float->double->long
double
赋值操作是个特例,上述原则不再适用。当赋值操作符的右操作数的类型与左操作数的类型不同
时,右操作数的值被转换为左操作数的类型的值,然后将转换后的值赋值给左操作数。
程序员可以在表达式中使用3种强制类型转换表达式:①static_cast<T>(E);②T(E);③(T)E
。其中任意一种都可改变编译器所使用的规则,以便按自己的意愿进行所需的类型强制。其中E 代表
一个运算表达式,T代表一个类型表达式。第三种表达形式是C语言中所使用的风格,在C++中,建议不
要再使用这种形式,应选择使用第一种形式。例如,设对象f的类型为double,且其值为3.14。则表达
式static_cast<int>(f)的值为3,类型为int。
通过构造函数进行类类型与其它数据类型之间的转换必须有一个前提,那就是此类一定要有一个
只带1个非缺省参数的构造函数,通过构造函数进行类类型的转换只能从参数类型向类类型转换,而想
将一个类类型向其它类型转换是办不到的。类类型转换函数就是专门用来将类类型向其它本类型转换
的,它是一种类似显式类型转换的机制。转换函数的设计有以下几点要特别注意:①转换函数必须是
类的成员函数;②转换函数不可以指定其返回值类型;③转换函数其参数行不可以有任何参数。
强制使类型检查复杂化,尤其在允许重载的情况下,导致无法消解的二义性,在程序设计时要注
意避免由于强制带来的二义性。
㈧ c++多态的实现方式有哪些
c++是一种编程语言,当然只有一种。但是基于c++的编程平台有很多种。
在这些平台上编程序,用的语言是c++的,但是在一些细节上会有所不同。我接触过的主要有vc++,symbian c++,borland c++,它们都是基于c++的,但是编程风格或方式稍有不同。
你学c++要打好基础,先学好c++语言。看书的时候可以找一些书名为“c++编程语言”之类的书,只有在学好c++语言后,才可以去具体的学习某个平台的编程教程。
一般来说,多态分为两种,静态多态和动态多态。静态多态也称编译时多态,主要包括模板和重载。而动态多态则是通过类的继承和虚函数来实现,当基类和子类拥有同名同参同返回的方法,且该方法声明为虚方法。
当基类对象,指针,引用指向的是派生类的对象的时候,基类对象,指针,引用在调用基类的虚函数,实际上调用的是派生类函数。这就是动态多态。
静态多态的实现。
静态多态靠编译器来实现,简单来说就是编译器对原来的函数名进行修饰,在c语言中,函数无法重载,是因为,c编译器在修饰函数时,只是简单的在函数名前加上下划线”_” ,不过从gcc编译器编译之后发现函数名并不会发生变化。
而c++编译器不同,它根据函数参数的类型,个数来对函数名进行修饰,这就使得函数可以重载,同理,模板也是可以实现的,针对不同类型的实参来产生对应的特化的函数,通过增加修饰,使得不同的类型参数的函数得以区分。
㈨ c++里的类的继承和多态与java里的继承和多态的区别是
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础陆前纯上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Java和c++的悔则相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,并且编程环境更为简单。我在这里不能完全列出不同之处,仅列出比较显着的区别:
1.继承:
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很早咐强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。
java不支持多继承,而有可能某个类或对象使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现的代码。一个类可以实现多个接口。
2.多态:
c++中多态更容易理解的概念为:允许父类指针或名称来引用子类对象,或对象方法,而实际调用的方法为对象的类类型方法
java中多态是方法的重写Overriding和重载Overloading是多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
3.指针:
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
㈩ 能用c实现c++所有功能吗c能实现多态吗
C 语言是门很强大的时间,从理论上来讲,通过加长开发时间,是可以实现现今计算机软件能达到的所有功能的。
原散纤因:
C 语言是和硬件紧密结合的语言,除了机器语言和汇编语言,它是最靠近硬件级的。
而现今的两大操作系统 Linux 和 windows 都是用C语言写的。
所以,如果想完成C++的功能,完全可以通过C语言写一个类似C++的语言出来,然后空掘知再通过这门语言完成所需功能。
总而言之一句话:别的语言能做到的,C语言一定能做到; C语言能做到的,别的语言不一定能做到。(别的语言不包括机斗消器语言和汇编语言)