C++函数


一、实参与形参区别

函数调用时,主调函数把实参的值传给被调函数的形参,实现数据传递。

有以下特点:

1.形参变量只有被调用时才分配内存,调用结束后释放

2.实参可以是常量、变量、表达式、函数等

3.函数调用时数据单向传递,只能实参传给形参并不发生变化


二、静态局部对象

static局部对象一旦被创建,在程序结束前不会被撤销。在被多次调用时会保持原有值,如下例子

size_t count_calls()
{
static size_t ctr = 0;
return ++ ctr;
}

int main()
{
for(size_t i = 0; i != 10; ++i)
count << count_calls() << endl;
return 0;
}
这个程序依次输出1 ~ 10 的整数


三、构造函数的定义

和其他成员函数一样,构造函数也必须有类中声明,但是可以在类中或类外定义。如下在类中定义:

class Sales_item{
public:
double avg_price() const;
bool same_isbn(const Sales_item &rhs)const
{
return isbn == rhs.isbn;
}
type Sales_item():units_sold(0),revenue(0.0){}

private:
std::string isbn;
unsigned units_sold;
double revenue;
}
冒号和冒号与定义(空)函数体的花括号之间的代码。初始化列表表明units_sold和revenue成员都就初始化为0.每当创建Sales_item对象时,它的这两个成员都以初值0出现


四、重载函数

出现在相同作用域中的两个函数,如果具有相同的名字而形参不同,则称为重载函数


五、指向函数的指针

将ff声明为一个函数,它带有一个int型的形参。

int (*) (int *, int);

简化该定义

typedef int (*PF)(int*, int);

PF ff(int);
int Fun1(FnType ft, int x, int y)
{
return (*ft)(x, y);
}
int Fun2(int (*fn)(int , int), int x, int y)
{
return (*fn)(x, y);
}

int main()
{
count << Fun1(&Sum, 2, 3)<< ""; //输出5
count << Fun2(&Sum ,3, 4)<< "\n"; //输出7
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leonban

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值