#include "iostream"
using namespace::std;
using Fun=void(int ,const string &); //普通函数类型的别名。
Fun show; //声明普通函数
void show(int ,const string&);//声明普通函数。
struct BB
{
void operator()(int bh,const string& message){
cout<<"亲爱的"<<bh<<","<<message<<endl;
}
};
struct CC
{
void show(int bh,const string&message)
{
cout<<"亲爱的"<<bh<<","<<message<<endl;
}
};
struct DD
{
using Fun=void(*)(int ,const string&);
operator Fun (){
return show; //返回普通函数。
}
};
int main()
{
show(1,"我是一只傻傻鸟。");
void (*fp1)(int ,const string&)=show;//声明函数指针,指向普通函数。
void (&fr1)(int ,const string&)=show;//声明函数引用,引用普函数。
fp1(2,"我是一只傻傻鸟。"); //用函数指针调用普通函数
fr1(3,"我是一只傻傻鸟。");//用函数指针调用普通函。
Fun *fp2=show;//用函数指针,指向普通函数
Fun &fr2=show;//用函数引用调用普通函数
fp2(4,"我是一只傻傻鸟。");//用函数指针调用普通函函数
fr2(5,"我是一只傻傻鸟。");//用函数引用
BB bb;
bb(11,"我是一只傻傻鸟。");//用对象调用方式
BB()(12,"我是一只傻傻鸟。");//用匿名对象调用
BB& br=bb;//引用函数
br(13,"我是一只傻傻鸟。");//用对象的引用调用函数。
CC cc;
cc.show(14,"我是一只傻傻鸟。");
//void (*fp11)(int ,const string&)=&show;//普通函数的指针。
void (CC::* fp11)(int ,const string&)=&CC::show;
(cc.*fp11)(15,"我是一只傻傻鸟。");
using pFun=void(CC::*)(int ,const string&);//类成员函数的指针。
pFun fp12=&CC::show;//让成员类函数的指针指向类成员的地址。
(cc.*fp12)(16,"我是一只傻傻鸟。"); //用类成员函数的指针调用类成员的函数。
DD dd;
dd(17,"我是一只傻傻鸟。");//可以被转换为函数指针的类对象。
}
void show(int bh,const string& message){
cout<<"亲爱的"<<bh<<","<<message<<endl;
}
亲爱的1,我是一只傻傻鸟。
亲爱的2,我是一只傻傻鸟。
亲爱的3,我是一只傻傻鸟。
亲爱的4,我是一只傻傻鸟。
亲爱的5,我是一只傻傻鸟。
亲爱的11,我是一只傻傻鸟。
亲爱的12,我是一只傻傻鸟。
亲爱的13,我是一只傻傻鸟。
亲爱的14,我是一只傻傻鸟。
亲爱的15,我是一只傻傻鸟。
亲爱的16,我是一只傻傻鸟。
亲爱的17,我是一只傻傻鸟。
发表回复