class CWinApp { public: CWinApp* m_pcurrentWinApp;
public:CWinApp::CWinApp(){m_pcurrentWinApp=this;cout<<"CWinAppConstructor\n";}CWinApp...
public:
CWinApp::CWinApp()
{
m_pcurrentWinApp = this;
cout<<"CWinApp Constructor \n";
}
CWinApp:: ~CWinApp()
{
cout<<"CWinApp Decstructor \n";
}
//CWinApp* m_pcurrentWinApp 在类自身的声明中声明类的对象指针是不是必须在类的构造函数里初始化?这种方式感觉怪怪的,(C++) 展开
CWinApp::CWinApp()
{
m_pcurrentWinApp = this;
cout<<"CWinApp Constructor \n";
}
CWinApp:: ~CWinApp()
{
cout<<"CWinApp Decstructor \n";
}
//CWinApp* m_pcurrentWinApp 在类自身的声明中声明类的对象指针是不是必须在类的构造函数里初始化?这种方式感觉怪怪的,(C++) 展开
展开全部
确实是怪怪的,如果只是指向this完全是脱裤子放屁,又是哪个无良的书里写的。
不过,如果是为了连接其他的对象,比如像链表那样,还是有用的,看以后怎么用了。可能只是初始化为this,然后可能会有方法把它指向别的对象。
不过,如果是为了连接其他的对象,比如像链表那样,还是有用的,看以后怎么用了。可能只是初始化为this,然后可能会有方法把它指向别的对象。
追问
我的意思是如果要在类里面声明自身的对象或者对象指针,构造函数是不是不能使用默认的?还是有其它什么要注意的?
追答
默认构造函数是没有参数的构造函数,默认构造函数如果你不定义,编译器会给你定义一个非常简单的默认构造函数,在这个默认构造函数里,对象类型的数据成员会调用其默认构造函数,基本类型的什么都不会做。所以,如果类的数据成员的默认构造函数都存在并且符合你需要的语义就可以不写了,基本类型整数、字符、指针等默认是不会初始化的,所以如果有这样的成员就应该自己写默认构造函数来初始化这些成员。尤其需要注意的是指针类型的成员,看你这个类要不要负责分配它的内存,如果要负责,还必须负责在析构函数中释放内存;如果不需要也要初始化为合适的值,比如NULL。以上是什么情况需要自定义默认构造函数,跟自不自身没多大关系。
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询