C++函数

 对非const引用参数不允许做类型转换,例如:
void update(float& i);

void g(double d, float r)
{
    update(2.0f); //错误
    update(r);  //传递r的引用
    update(d);  //错误,要求类型转换
}

一个void函数可以将另一个void函数作为它的return语句中的表达式,例如:
void g(int* p);
void h(int* p)
{
    return g(p); //可以,返回无值
}


函数重载只重载参数类型和参数个数,不重载返回类型

在不同的非名字空间作用域里声明的函数不算是重载,例如:
void f(int);
void g()
{
    void f(double);
    f(1); //调用f(double)
}

在同一个作用域中随后的声明里,默认参数都不能重复或者改变,例如:
void f(int x = 7);
void f(int = 7); //错误,默认参数不能重复
void f(int = 8); //错误,默认参数不能改变
void f(int);  //可以,函数可以重复声明
void g()
{
    void f(int x = 9); //可以,这个声明将遮蔽外层的声明
}

void error(string s);
void(*f1)(string) = &error; //可以
void(*f2)(string) = error; //也可以,与&error意思一样
void g()
{
    f1("vasa");  //可以
    (*f1)("mary rose"); //也可以
}

宏名字不能重载,而且宏预处理器不能处理递归调用

##宏运算符可以拼接两个串,构造出一个新串,例如:
#define NAME2(a,b) a##b
int NAME2(hack,cah)();将产生int hackcah();

#undef X保证不再用称为X的有定义的宏--无论在此指令之前有还是没有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值