函数声明

来源:互联网 发布:大数据 精准医疗 ppt 编辑:程序博客网 时间:2024/05/01 01:11
1、函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型。

2、如果有一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参。
如:string screenInit(string::size_type height = 24,string::size_type width = 80,char background = ‘ ’);

3、既可以在函数声明也可以在函数定义中指定默认实参,但是,在一个文件中,只能为一个形参指定默认实参一次。

4、static局部对象:这种对象一旦被创建,在程序结束前都不会被撤销。

5、内联函数:在函数返回类型前加上关键字inline。将函数指定为内联函数,通常就是将它在程序中每个调用点上”内联地“展开。
内联函数应该在头文件中定义。

6、类的成员函数:函数原型必须在类中定义,但是函数体既可以在类中也可以在类外定义。
编译器隐式地将在类中定义的成员函数当作内联函数。
成员函数声明的形参表后面的const改变了隐含的this形参的类型,使得this是指向const 对象的指针。const对象,指向const对象的指针或引用只能用于调用其const成员函数,如果尝试用它们来调用非const成员函数,则是错误的。

7、构造函数:构造函数和类同名,而且没有返回类型。

8、跟在构造函数的形参表之后,以冒号开始的,在冒号和花括号之间的代码称为构造函数的初始化列表。构造函数的初始化列表为类的一个或多个数据成员指定初值。
如:isbn和units_sold、revenue都是Sales_item类的数据成员
public:
       Sales_item():units_sold(0),revenue(0.0),isbn(‘ ’){}

9、由编译器创建的默认构造函数通常称为合成的默认构造函数。

10、类定义应置于名为type.h或type.H的文件中,type指在该文件中定义的类的名字。成员函数的定义则一般存储在与类同名的源文件中。

11、main函数不能重载。
复制形参时并不考虑形参是否为const——函数操纵的只是副本。形参与const形参的等价性仅适用于非引用形参。有const引用形参的函数与非const引用形参的函数是不同的。类似的,如果函数带有指向const类型的指针形参,则与带有指向相同类型的非const对象的指针形参的函数不相同。

12、在C++函数调用中,函数名字查找发生在类型检查之前。

13、实参类型转换:通过类型提升实现的转换优于其他标准转换。

14、不能基于指针本身是否为const来实现函数的重载,此时,const用于修饰指针本身,而不是修饰指针所指向的类型。

15、指向函数的指针:函数类型由其返回类型以及形参表确定,而与函数名无关。
如:bool (*pf)(const string &,const string &);
这个语句将pf声明为指向函数的指针,它所指向的函数带有两个const string&类型的形参和bool类型的返回值。
函数指针只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值。
指向函数的指针可用于调用它所指向的函数,可以不需要使用解引用操作符,直接通过指针调用函数。
如:pf(”hi“,”bye“);
(*pf)(”hi“,”bye“);

16、返回指向函数的指针
如:int (*ff(int))(int * ,int);
阅读函数指针声明的最佳方法是从声明的名字开始由里而外理解。
ff(int)将ff声明为一个函数,它带有一个int型的形参,该函数返回int (*)(int *,int);
允许将形参定义为函数类型,但函数的返回类型则必须是指向函数的指针,而不能是函数。
具有函数类型的形参所对应的实参将被自动转换为指向相应函数类型的指针,但是当返回的是函数时,同样的转换操作则无法实现。
0 0
原创粉丝点击