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

各位帮小弟我解释一下

2013-07-08 
各位帮我解释一下,#include iostreamusing namespace stdclass CBase{public:int npublic:CBase(int m

各位帮我解释一下,


#include <iostream>
using namespace std;

class CBase
{
public:
int n;
public:
CBase(int m) : n(m){}
CBase(){}
};


class CDemo : public CBase
{
private:
int n;
public:
CDemo(int m):CBase(m),n(m)
{
cout<<"CBase &n:"<<&CBase::n<<endl;
cout<<"CBase &n:"<<&(CBase::n)<<endl;
cout<<"CBase &n:"<<&this->CBase::n<<endl;

cout<<"CDemo &n:"<<&CDemo::n<<endl;
cout<<"CDemo &n:"<<&(CDemo::n)<<endl;
cout<<"CDemo &n:"<<&this->CDemo::n<<endl;
}
};

int main()
{
CDemo cd(10);

return 0;
}


////////////////////////////////////////////////////////////////////////////
// 输出
CBase &n:1
CBase &n:0012FC90
CBase &n:0012FC90
CDemo &n:1
CDemo &n:0012FC94
CDemo &n:0012FC94
请按任意键继续. . .

那个1输出是怎么回事? vs2008
[解决办法]
&CBase::n
得到的是类成员指针, cout 并没有对这种类型定义 operator<< 操作符. 因此它被转型为 Bool 来输出了.
如果用 printf("%d" 来输出, 它的值是 n 在类中的偏移量.

热点排行