hur.cn - 华软网

 热门搜索

this指针 ,帮忙指点指点!

  作者:未知    来源:网络    更新时间:2010/12/7
问题1、

在CMyView类中有个消息响应函数fun(),其中包括代码:

CClientDC dc(this);

孙鑫说this是指向CWnd类的指针;我总觉得应该指向CMyView,然则不能证明;


到底this是指向哪儿的啊?为什么?最好帮助写几行代码证明一下!



问题2,控制台程序程序  

class animal
{
};

class human
{
void fun()
{
animal fish(this);    //这行报错;
}
};

void main()
{
}

代码有问题,照旧不能这么弄?是否是在类的成员函数里不能创建另外类的对象?



---华软 网友回答---
1.CMyView是CView的子类,而CView是CWnd子类,所以说,这里的this也代表了CWnd。同时,CClientDC类的构造函数:CClientDC(CWnd* pWnd);要求的参数是CWnd的指针,所以孙鑫是没有错的。
2.你的animal类似乎基本就没有定义形如:animal(human *pHuman)这样的构造函数,所以你写animal fish(this); 语句自然是毛病的。
---华软网友回复---
引用 1 楼 happyparrot 的回复:
1.CMyView是CView的子类,而CView是CWnd子类,所以说,这里的this也代表了CWnd。同时,CClientDC类的构造函数:CClientDC(CWnd* pWnd);要求的参数是CWnd的指针,所以孙鑫是没有错的。
2.你的animal类似乎基本就没有定义形如:animal(human *pHuman)这样的构造函数,所以你写animal fish(this); 语句自然是……

++
---华软网友回复---
引用楼主 wuxinyanzi 的回复:
问题1、

在CMyView类中有个消息响应函数fun(),其中包括代码:

CClientDC dc(this);

孙鑫说this是指向CWnd类的指针;我总觉得应该指向CMyView,然则不能证明;


到底this是指向哪儿的啊?为什么?最好帮助写几行代码证明一下!



问题2,控制台程序程序  

class animal
{
};

class ……


请问一下,1、“这里的this也代表了CWnd”,是说this也代表CMyView吗?

2、把animal fish(this); 改成animal fish; 或给animal增加构造函数,一样的出现毛病;我适才不小心少打了几下。。。。
---华软网友回复---
引用 3 楼 wuxinyanzi 的回复:
引用楼主 wuxinyanzi 的回复:
问题1、

在CMyView类中有个消息响应函数fun(),其中包括代码:

CClientDC dc(this);

孙鑫说this是指向CWnd类的指针;我总觉得应该指向CMyView,然则不能证明;


到底this是指向哪儿的啊?为什么?最好帮助写几行代码证明一下!



问题2,控制台程序程序

class ani……
this就是代表CMyView的对象指针,比如CMyView *pwnd = new CMyView();,这时this就是代表pwnd。
问题2:
C++">class human;
class animal
{
public:
animal(human*const pwnd)
{

}
};

class human
{
public:
void fun()
{
animal fish(this); 
}
};

---华软网友回复---

---华软网友回复---
你看this出现在哪一个域就表示谁,最上层的哈~

eg
void CWnd::XXfunc
{
    this //表示 CWnd*
}
---华软网友回复---
你对继承怎么看
eg
class animal()

class dog public: animal

dog是animal吗?
CXXView是CWnd吗?
---华软网友回复---
引用 7 楼 m_tornado 的回复:
你对继承怎么看
eg
class animal()

class dog public: animal

dog是animal吗?
CXXView是CWnd吗?

你这句话让我触电了一样呵呵
---华软网友回复---
引用 7 楼 m_tornado 的回复:
你对继承怎么看
eg
class animal()

class dog public: animal

dog是animal吗?
CXXView是CWnd吗?

class dog public: animal
-->
class dog : public animal
---华软网友回复---
引用 1 楼 happyparrot 的回复:
1.CMyView是CView的子类,而CView是CWnd子类,所以说,这里的this也代表了CWnd。同时,CClientDC类的构造函数:CClientDC(CWnd* pWnd);要求的参数是CWnd的指针,所以孙鑫是没有错的。
2.你的animal类似乎基本就没有定义形如:animal(human *pHuman)这样的构造函数,所以你写animal fish(this); 语句自然是……

顶 
---华软网友回复---
this是常指针 ,不能赋值给普通指针

有带参数的构造函数就不会自动生成默许构造函数
---华软网友回复---
引用 9 楼 visualeleven 的回复:
引用 7 楼 m_tornado 的回复:
你对继承怎么看
eg
class animal()

class dog public: animal

dog是animal吗?
CXXView是CWnd吗?

class dog public: animal
-->
class dog : public animal


组长,我错了~
---华软网友回复---
在CMyView类中有个消息响应函数fun(),其中包括代码:

CClientDC dc(this);

孙鑫说this是指向CWnd类的指针;我总觉得应该指向CMyView,然则不能证明;


这里的this是指向CMYView,但CMYView是CWnd的派生类,所以孙鑫没有说错,你也没有错.....
---华软网友回复---
细心才是硬事理...
---华软网友回复---
this指针就是指向当前的对象
---华软网友回复---
分数多题目还简单,我来晚啦,杯具      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。