大挪耗

c++可调用对象

#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,我是一只傻傻鸟。


已发布

分类

可以收藏大挪耗一下。下载麻烦点城通网盘,站长保证下载速度,不会限速的,放心点就是了;分卷,安卓下载为txt:程序下载为url,不会下载参考不会下载。如果你想让本站活的久一点,请直接捐助

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注