函数 指针

 

class Sales_item
{
public :
    double avg_price() const;
    bool same_isbn(const Sales_item &&rhs) const //常量成员函数只能读取而不能修改调用它们的对象的数据成员
    { return isbn==rhs.isbn;}
private:
    string isbn;
    unsigned units_sold;
    double revenue;
 
};
 
double avg_price() const;定义为const类型后,不能修改成员对象。例如不能修改isbn
 
 
形参与const形参的等价性仅适用于非引用形参。有const引用形参的函数与有非const引用形参的函数是不同的。
 
指向函数的指针
函数类型由返回类型以及形参表确定,而与函数名无关
例如 :
bool (*pf)(const string &,const string&);
//pf points to function returning bool that takes two const string references
函数指针只能通过同类型的函数或指向函数指针或0值常量表达式进行初始化或赋值。
 
bool 8pf(const string&,const string &);
//declares a function named pf that returns a bool*;
 
 
在引用函数名但又没有调用该函数时,函数名将被自动解释为指向函数的指针。
 
函数指针形参:
 void useBigger(const string&,const string&,bool(const string&,const string&));
或者void useBigger(const string&,const string&,bool(*)(const string&,const string&));
 
返回指向函数的指针:
例如 :
int (*ff(int))(int*,int);\
含义为 :
ff(int) 将ff声明为一个函数,它带有一个int型的形参。该函数返回
int(*)(int*,int);
它是一个指向函数的指针,所指向的函数返回int 型并带有两个分别是int*型和int型形参。
使用typedef可使该定义更简明易懂
typedef int (*PF)(int*,int);
PF ff(int);
 
形参可以定义为函数类型,但函数的返回类型则必须是指向函数的指针。而不能是函数。
 

你可能感兴趣的:(函数)