各位帮我解释一下,

「已注销」 2013-06-26 11:11:02


#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
...全文
174 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-06-28
  • 打赏
  • 举报
回复
谢了!!!!
www_adintr_com 2013-06-26
  • 打赏
  • 举报
回复
&CBase::n 得到的是类成员指针, cout 并没有对这种类型定义 operator<< 操作符. 因此它被转型为 Bool 来输出了. 如果用 printf("%d" 来输出, 它的值是 n 在类中的偏移量.

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧