c语言怎么写重载函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言怎么写重载函数?相关的知识,希望对你有一定的参考价值。

例如:
void myprint(char * sp);
void myprint(char * format,char *sp);
c语言是怎么实现这两个函数的重载的呢?
编译环境就是c环境

c语言写重载函数:

    首先明确重载函数的定义:在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。

    当将要定义一组函数,使它们执行一系列的操作,但是它们是应用在不同的参数类型上的。此时可以选择重载函数。

    例如:

    上面的三个函数都可以大概地说成判断一组数中的最大值,对于函数的用户来说,他们并不关心函数定义的细节,也就是说他们不关心判断两个整数的大小和判断数组(vector容器)数的大小应该使用不同的函数,而对于程序的设计者来说这可是不得不想到的。程序员必须记住并查找每个函数名。而函数的重载把程序员从这种问题的复杂性中解放了出来,C++提供了这种支持。

    上面的三个比较大小的函数可以定义成:

    通过参数就可以一眼分辨不同的函数。

参考技术A C语言不具备重载的功能。虽然你可以在VC中这么写,但是只是编译把它当c++了而已。 参考技术B C语言重载仅限于像&,*等这样的单目操作符,不支持自定义函数重载的,在C++中这一点得到了改进 参考技术C 函数重载就是要求,函数的名字相同(例如这里边的myprint),而参数不同,主要包括,参数个数不同,或者,参数的类型不同,但是返回类型不同是不能构成重载的!
当你做好这两个函数后,你在主函数就可以使用,myprint('c')调用单个参数的函数,就是你这里边的第一个了,
用myprint('c','a')调用二个参数的函数,就是你这里边的第
二个了(有什么不明白的问我吧172610236
)本回答被提问者和网友采纳
参考技术D C语言不支持重载 重载是C++的概念

C++中重载加减乘除等运算符的纯虚函数中的返回类型怎么定义??运算符中参数怎么写??

纯虚函数表示基类是一个抽象类(ABC),因此要在派生类中具体实现运算符重载,由于运算符在运算过程中会生成一个临时对象;如:
class Vector

private:
int x;
int y;
;
假设要在类中实现一个+运算符的重载:
Vector Vector::operator+(const Vector & b) const

return Vector(x+b.x, y+b.y);

假设有 Vector v1,v2;
Vector v = v1 + v2;
上述语句中:Vector::operator+()将计算v1 和v2 的和,而这两者之和是一个临时对象,没有指向该两者和临时对象的引用,因此,返回值应为对象本身;虽然存在调用复制构造函数来创建返回对象的开销,这是无法避免的;

对于运算符中的参数一般采取对象引用类型,这样可以减少默认复制函数的开销,提高效率。当然如果为了防止运算符中改变参数,将其设为const类型就可以了。
参考技术A //设计一个学生类student,包括姓名和三门课程成绩,
//利用重载运算符”+“将所有学生的成绩相加放在一个对象中,再对该对象求各门课程的平均分。
class student

private:
float scr1;
float scr2;
float scr3;
static float total;
char name[20];
public:
student()


student(char A[],float x,float y,float z)

strcpy(name,A);
scr1=x;
scr2=y;
scr3=z;
total+=x+y+z;


student operator +(const student &pt1)

student temp;
temp.scr1=this->scr1+pt1.scr1;
temp.scr2=this->scr2+pt1.scr2;
temp.scr3=this->scr3+pt1.scr3;
return temp;


void print()

cout<<"averge score is:\n";
cout<<scr1/3<<"\t"<<scr2/3<<"\t"<<scr3/3<<endl;
cout<<"all score is:"<<total<<endl;

;
float student::total=0;
void main()

student st[3]= student("dmm",68,75,86),
student("tianle",89,78,95),
student("women",65,45,35);
student avg;
avg=st[0]+(st[1]+st[2]);
avg.print();


一段类似的代码,看看吧
参考技术B 返回类型取决于运算符
一般都是返回自己的引用。return *this.返回类型 X& 。参数一般也是const X&
X是你的类。
参考技术C 你想怎么定义就怎么定义。看需求

以上是关于c语言怎么写重载函数?的主要内容,如果未能解决你的问题,请参考以下文章

C++_函数_函数的占位参数_函数重载---C++语言工作笔记034

C语言,fabs有多个重载函数,请问是哪里错了,急在线等

5. 详解函数重载

函数重载与缺省参数

函数重载与缺省参数

2-4:C++快速入门之函数重载