C++ 指向成員函數指針問題

成員函數指針與常規指針不一樣,一個指向成員變量的指針並不指向一個內存位置。一般最清晰的作法是將指向數據成員的指針看做爲一個偏移量。linux

class ru_m {
public:
    typedef int (ru_m::*p)();
    p get_m();
    int show();
};

int ru_m::show(){
    return 10000;
}

ru_m::p ru_m::get_m(){
    ru_m::p vc;
//錯誤,當爲對象時,對象指向的地址爲相對地址,非內存地址
//因此,ru_m->show 取址操做在C++標準裏是不合法的
//但ru_m::show 爲指向具體的成員函數中,非對象中,爲實際內存地址
//但在windows裏ru_m->show能夠正常,讓人無語。
 //   vc=&(ru_m->show);
    vc=&ru_m::show;
    return vc;
}

windows 跟 linux不一樣。。。windows

相關文章
相關標籤/搜索