C++函数

来源:互联网 发布:don t starve for mac 编辑:程序博客网 时间:2024/06/06 03:14


一、实参与形参区别

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

有以下特点:

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)<< ""; //输出5count << Fun2(&Sum ,3, 4)<< "\n"; //输出7return 0;}


原创粉丝点击