小众知识

首页 > 正文

在C语言中有没有符合参数多态概念的情况?

rt
请举例说明,谢谢 ^^  

楼主有些误解了,C语言中的确有你说的多变参数的函数,比如printf()scanf()等等,它们的实现也的确是用宏来实现了,具体实现不赘述,C++是C的超集,自然也可以用这种方式解决。
  下面说多态,其实多态是面向对象的特征,具体到C++中,函数的重载,重写,以及虚函数都是多态的体现,而类似于C中的多变函数,则是用函数的重载实现的,举个例子
class A
{
public:
    void func(int);
    void func(float);
    void func(long);
};
void A::func(int x)
{
    cout << "int version" << endl;
}
void A::func(float x)
{
    cout << "float version" << endl;
}
void A::func(long x)
{
    cout<< "long version" << endl;
}

void main()
{
    int a;
    float b;
    long c;
    func(c);
    func(b);
    func(a);
}
类A中的func()成员函数有3个重载版本,重载函数是通过对应不同的参数来识别时调用哪一个函数,这就是类似C中的可变函数。
(重载只是C++中多态的一角,想更详细的了解的,我想市面上任何一本C++
的书都会讲到,不过重点可能都是虚函数,重载和重写比较容易理解)
----------------我是无视上面的分割线--------------------------
你的问题里面不是说C++么
C语言怎么实现的看我转的这篇文章吧


多态与函数的多变参数没有直接关系的。多态指的是调用实例(对象)的方法的时候,编译器可以通过多态实现动态绑定,从而根据实例调用最适合的方法。比如,猫和狗都是从“动物”派生出来的类,它们都有“吃”这个方法,那么,当猫或狗的实例(对象)调用“吃”时,编译器通过多态性检查运行时调用“吃”方法的环境来判断是猫在“吃”还是狗在“吃”,从而调用最为适当的方法。

 Lear 发表于:2002-10-25 17:09:34
得分:0 

up 

 zshuc 发表于:2002-10-25 17:17:04
得分:0 

up 

 hello_wyq 发表于:2002-10-25 22:59:22
得分:0 

两个没有关系的东西的时候是不是可以认为没有度态关系?


 winco 发表于:2002-10-26 13:30:36
得分:0 

好像没有吧 

 Sustain 发表于:2002-10-26 13:39:40
得分:0 

怎么说呢?
可变参数的函数算不算呢???
比如printf 

 blh 发表于:2002-10-26 13:54:17
得分:0 

用宏,呵呵 

 Lear 发表于:2002-11-14 10:12:56
得分:0 

sizeof 是典型的参数多态 :( 

 wwayya 发表于:2002-11-15 18:27:54
得分:0 

参数多态:对不同类型的值执行相同的代码。

宏----好象不对,比如象典型的这种情况
 #define max(a,b) ((a)>(b)?(a):(b)
  int a=5,b=0;
  max(a++,b);   (1) a被累加2次
  max(a++,b+10); (2)a被累加1次
(1)和(2)的行为并不相同。

谁知道sizeof的实现?

上一篇:看过C++面向对象高效编程的朋友谈点感受!!!
下一篇:怎么增加CSDN可用积分???

分享到: