首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

二个C++专有运算符

2013-06-25 
2个C++专有运算符成员对象选择 .*成员指针选择 -*#include iostreamusing namespace stdclass CStuden

2个C++专有运算符
成员对象选择 .*
成员指针选择 ->*



#include <iostream>

using namespace std;

class CStudent
{
public:
    int *age;

CStudent()
{
    age = new int(18);
}

~CStudent()
{
    delete age;
age = NULL;
}
};

int main()
{
CStudent std1;
CStudent *pStd = &std1;

cout << *std1.age << endl;
cout << *pStd->age << endl;

//cout << std1.*age << endl;
//cout << pStd->*age << endl;

    return 0;
}



如上2个注释的地方都不对,请问该怎么用啊!! C++
[解决办法]

class Testpm {
public:
   void m_func1() { cout << "m_func1\n"; }
   int m_num;
};

// Define derived types pmfn and pmd.
// These types are pointers to members m_func1() and
// m_num, respectively.
void (Testpm::*pmfn)() = &Testpm::m_func1;
int Testpm::*pmd = &Testpm::m_num;

int main() {
   Testpm ATestpm;
   Testpm *pTestpm = new Testpm;

// Access the member function
   (ATestpm.*pmfn)();
   (pTestpm->*pmfn)();   // Parentheses required since * binds
                        // less tightly than the function call.

// Access the member data
   ATestpm.*pmd = 1;
   pTestpm->*pmd = 2;

   cout  << ATestpm.*pmd << endl
         << pTestpm->*pmd << endl;
   delete pTestpm;
}
来自:http://forums.codeguru.com/showthread.php?451429-Member-pointer-selector-issues
[解决办法]
C++ 成员指针?
CStudent std1;
CStudent *pStd = &std1;
int* CStudent::*page = &CStudent::age;
cout << *(std1.*page) << endl;
cout << *(pStd->*page) << endl;

热点排行