构造函数还未执行完毕,有没有对象形成了?

zdrone 2009-09-03 10:52:18
基础比较弱。


我是这样一种结构

程序操作类里有个线程在运行。会去检测当前使用远程数据库还是本地数据库。
class TDBOper {
public :
.....
static TADOConnection *m_localconn,*m_remoteconn
vool setConnection(bool remote);
private :
TCheckDB *CheckDB ; //封装的线程类
}

TDBOPer:TDBOper ()
{
if(...) //远程数据库死掉的话
{
CheckDB = new TCheckDB(this); //把自己的指针传给线程类
CheckDB.Resume(); //执行到这里的时候构造函数还未完成
}
}



在TCheckDB 类里会去调用
DBOper->setConnection(bremote) ; //在这里反问 TDBOper 的成员变量访问就出错,而且都是NULL


就是说 构造函数还未结束,对象就还没有产生? 成员变量就不能访问?
...全文
219 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xylicon 2009-09-03
  • 打赏
  • 举报
回复
构造函数还未结束,对象就还没有产生? 成员变量就不能访问?

主要进入了构造函数,对象就已经创建成功了,哪怕构造函数还没结束。

成员变量是先于构造的对象本身构造出来的。因此成员变量是可以访问的。
FirryHere 2009-09-03
  • 打赏
  • 举报
回复
构造函数内执行时,一般对象是创建了,只是执行一些别的初始化工作,对象已经存在了,但是出错肯定是由于你对象内的某个成员没有构建的问题。监视一下吧,应该不是太大的问题,另外,很多人,认同,不在构造函数和析构函数内执行,会导致“堆栈异常”的代码,这就有了finalconstruct之类成员函数的出现。
class A
{
int a;
string b;
int * _p;
public:
A()
:a(0)//这个时候,可以看出,实际a要先于{}执行体被构建
{
...-p=new int;
}
};
jyh_baoding 2009-09-03
  • 打赏
  • 举报
回复
这种情况要出错的
zoulie 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xylicon 的回复:]
构造函数还未结束,对象就还没有产生? 成员变量就不能访问?

主要进入了构造函数,对象就已经创建成功了,哪怕构造函数还没结束。

成员变量是先于构造的对象本身构造出来的。因此成员变量是可以访问的。
[/Quote]
同意,构造函数里面不是能初始化成员变量么,而每个尘缘变量都有this指针
既然有this指针,说明已经分配内存了,

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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