为什么C++设虚函数,smalltalk语言没有?Ada的类属函数和C++虚函数的同异是什么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 18:47:20
为什么C++设虚函数,smalltalk语言没有?Ada的类属函数和C++虚函数的同异是什么?

为什么C++设虚函数,smalltalk语言没有?Ada的类属函数和C++虚函数的同异是什么?
为什么C++设虚函数,smalltalk语言没有?Ada的类属函数和C++虚函数的同异是什么?

为什么C++设虚函数,smalltalk语言没有?Ada的类属函数和C++虚函数的同异是什么?
Ada语言类属与C++的虚函数一点也不相同.
type T is tagged -- “标记的记录”,tagged record类似于C++的多态类
record
C :Character;
end record;
procedure Op1 (X :T); -- C++的virtual void op1();
procedure Op2 (X :T'Class; N :Integer);
-- 不是因为有N这个参数,而是因为有'Class属性,C++的普通函数:void op2(const int& n);
-- 只有(abstract) tagged record与interface可以有'Class属性——在作为子程序的首参数时
type Derived is new T with
record
Num :Integer;
end record;
procedure Op1 (X :Derived); -- 覆盖基类的原生操作
procedure Op2 (X :Derived; N :Integer); -- 错误,不能覆盖
declare
Object :Derived := (C => 'C',Num => 3);
begin
Object.Op1; -- 调用 procedure Op1 (X :Derived);
Object.Op2; -- 调用 procedure Op2 (X :T'Class; N :Integer);
end;
类似就像C++的模板,但是,不同点在于:C++的模板参数一定是编译时被知道的,但Ada的类属不是这样的.Ada的类属对不同的参数的实例都共享同一个实体;但是C++会为不同的模板参数实例不同的实例,这样体积就可能过大或者储存器无法接受.类属与多态毫不相干,但是在Ada95时,有人会用类属艰难地、丑陋地模拟一种“类多重继承”,Ada2005已解决了这个问题.

为什么C++设虚函数,smalltalk语言没有?Ada的类属函数和C++虚函数的同异是什么? 设函数f(x)=3ax²-2(a+c)x+c(a>c>0).函数f(x)在区间(0,1)内是否有零点?为什么? 设函数f(x)=x丨x丨+bx+c为什么函数y=f(x)的图像关于(0,c)对称? 为什么要把二次函数设成Y等于X的平方加BX加C的形式 怎么设应用题里的二次函数表达式?有一些应用题就要设y=ax²+bx 有一些又要设y=ax²+c 为什么啊 怎么设的?能举点例子吗?本人很愚钝的 英语翻译OOP的许多原始思想都来之于Simula语言,并在Smalltalk语言的完善和标准化过程中得到更多的扩展和对以前的思想的重新注解.可以说OO思想和OOPL几乎是同步发展相互促进的.与函数式程序 设函数f(x)=ax^2+bx+c (a 设二次函数y=ax^2+bx+c(a 设二次函数y=ax^2+bx+c(a 设二次函数y=ax^2+bx+c (a 设函数f(x)=ax²+bx+c(a 二次函数交点式为什么可以这样设? 设函数z=x^2-y^2,则答案是C,我想问一下D为什么不对?(0,0)点不是它唯一的驻点吗? 设 A,B是非空的数集,.函数值的集合C={y|y= f(x)且x属于A}叫做函数的值域,显然C是B的子集,为什么 设a>b>c,则关于x的方程|x-a|+|x-b|+|x-c|=m无解时,m的取值范围A,(-∞,a+c-2b) B,(-∞,2a-b-2c) C,(-∞,a+b-2c) D,(-∞,a-c)答案说什么设函数,令f(x)>m,为什么呢 已知c>0,设p:函数y=c^x在R上是减函数;q:不等式x+|x-2c|> C语言:为什么要对函数定义? C中为什么要用内联函数