【发布时间】:2013-02-18 13:37:44
【问题描述】:
我有这个布局
class Base {
public:
virtual void Initialize() { // base Implementation }
Base() { Initialize(); }
};
class der_1 : public Base
{
public:
der_1() : Base() {}
virtual void Initialize() { // der_1 Implementation }
};
class der_2 : public Base
{
public:
der_2() : Base() {}
virtual void Initialize() { // der_2 Implementation }
};
现在,每当我创建 der_1 或 der_2 类的新对象时,我最终都会调用 Initialize() 的基本实现。显然,在创建对象时我不能调用虚函数。
截至目前,我在创建 der_1 或 der_2 类型的对象后调用 Initialize 函数,这对我来说似乎不是正确的做法,因为这会将 Initialize 函数调用耦合到每次创建对象时。
有人可以给我推荐更好的选择吗?
【问题讨论】:
-
我不会浪费我的时间来写一个正确的答案,因为我确信这已经被回答了 100 次。您不能在构造函数中调用虚函数。使Initialize成为一个非虚函数,在每个构造函数中调用,就可以了。或者在构造函数之后调用它。这两个之一......
-
@sud03r:当您已经在编写构造函数时,为初始化创建
virtual方法有什么意义?只需在构造函数中完成工作并完成它! -
已被询问了 100 次。看看右边的相关帖子=====>
-
@Everyone 很抱歉再次问这个问题。我应该很好地用谷歌搜索它。将关闭它。
标签: c++ virtual-functions