信用卡cvv码:VC++中变量引用的问题?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 07:12:12
CSetup.h中:
Class CSetup:public CDialog
{
public :
int var1;
......
}

CSetup.cpp中:
void CSetup:OnOK()
{
var1=5;
......
}

在主对话框中:
CMainDlg.h:
#include "CSetup.h"
Class CMainDlg:public CDialog
{
CSetup SDlg;
......
}

CMainDlg.cpp:
void CMainDlg::OnPaint()
{
......
int x=SDlg.var1;
......
}

从主对话框调用Setup对话框,OK之后,var1=5。但在CMainDlg::OnPaint()中看SDlg.var1,为什么SDlg.var1的值不是5,而是一个任意值呢?

你在主对话框的什么位置调用了SetUp对话框,若在Onpaint函数执行调用的,那其值应该是任意值了。
执行过SetUp对话框的OnOk函数之后,在主对话框中看到的值应该是5。
因为SetUp的对象作为主对话框的成员函数,所以只有在主对话框退出时才会无效,
引起调用SetUp的析构函数,这样会出错(非法操作),而不是任意值了。

点击ok以后自动调用了Cset的析构函数,原来的对象应该已经不存在了,对象的成员变量自然也不可能存在了,是任意的值!