【c++自学笔记03】

//2-4 操作符重载------operator 
// 并不是所有操作符都可以重载
//例

#include "iostream"

using namespace std;

struct comp                                //定义复数的结构体
{
    double real;
    double image;
    
};

comp operator+(comp one,comp another)    //重载comp的 + 法
{
    one.real+=another.real;
    one.image+=another.image;
    return one;
}

comp add(comp one,comp another)    //重载comp的 + 法
{
    one.real+=another.real;
    one.image+=another.image;
    return one;
}
int main(int argc, char const *argv[])
{
    /* code */
    comp a,b,c;
    a.real=1;
    a.image=2;
    b.real=3;
    b.image=4;
    c=a+b;        //等价 a=1+2i         b=3+4i            c=a+b=4+6i 虚部相加,实部相加
    cout<<"c=a+b;\t\t"<<"c.real="<<c.real<<"\tc.image="<<c.image<<endl;

    // 运算符重载的本质是函数调用 下面可以实现一样的效果
    c=add(a,b);            
    cout<<"c=add(a,b)\t"<<"c.real="<<c.real<<"\tc.image="<<c.image<<endl;
    return 0;
}
输出结果如下
c=a+b;        c.real=4    c.image=6
c=add(a,b)    c.real=4    c.image=6

// 2-5 默认参数---表面意思就是在函数定义时给形参一个默认值,如果这个形参没有传入对应的实参值,那么它则使用默认值

#include "iostream"

using namespace std;

//默认规则1:从右往左默认,中间不能跳跃
void fun1(int a,int b,int c=3)        //我们只能给c设置默认值,或者b和c同时设置默认值,或者a,b,c都同时设置默认值
{
    cout<<a<<b<<c<<endl;        
}
/*
下面都是错误的函数定义
void fun1(int a=1,int b,int c)        //没有从右往左
{
    cout<<a<<b<<c<<endl;        
}

void fun1(int a=1,int b,int c=3)        //中间跳跃
{
    cout<<a<<b<<c<<endl;        
}
*/ 

// 默认规则2:函数声明和定义一体时,默认参数在定义(声明)处,声明在前,定义在后时,默认参数在声明处
void fun2(int a=1,int b=2,int c=3);        //这是一个函数声明,这个函数的定义在后面,所以默认参数要在声明处

//默认规则3:一个函数不能既作重载又作默认参数,当你少些一个参数的时候,会参数二义性
// 例如

void fun3(int a,int b,int c=3)
{
    cout<<a*b*c<<endl;
}
void fun3(int a,int b)
{
    cout<<a+b<<endl;
}

// 对于上面的两个函数,当调用传递两个实参的时候,系统就不知道该调用哪个函数,产生二义性
int main(int argc, char const *argv[])
{
    /* code */
    // 对于规则

    fun1(1,2);

    fun2();

    return 0;
}
void fun2(int a,int b,int c)    //这个时候要注意,当声明和定义不在一起的时候,定义的时候不能写默认参数,定义的时候不能写默认参数,定义的时候不能写默认参数,
{
    cout<<a+b+c<<endl;
}



#笔记#
全部评论

相关推荐

07-20 21:57
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务