![]() |
#2
rjsp2012-04-12 08:19
|
请看下面的代码
class Base{
public:
Base(const std::string& logInfo)
{}
};
class Derive:public Base{
public:
Derive(const std::string& logInfo):Base(CreateLogInfo(logInfo))
{}
private:
void CreateLogInfo(const std::string& logInfo);
}
void Derive::CreateLogInfo(const std::string& logInfo)
{
std::cout<<typeid(*this).name()<<std::endl;
}
基于上述代码有两个问题
1.构造函数的顺序是先构造基类,但是当在Derive中构造Base时,此时的this指针的类型(类型认证)不是应该表现为Base吗,那么,为什么CreateLogInfo输出为Derive呢,我的意思是
调用CreateLogInfo的当然是Derive,当是此时它应还不是Derive
2.既然Derive的构造函数未开始(指在{之前),那么在Derive的函数初始化列表中调用CreateLogInfo又怎么可以成功呢
[ 本帖最后由 specilize 于 2012-4-11 21:29 编辑 ]