【发布时间】:2014-03-26 15:50:19
【问题描述】:
我对 C++ 的 OO 方面比较陌生,所以请原谅这个问题,我认为这个问题比较直截了当;
我有一些代码,大致是这样的
SuperClass* super;
if (useSub1())
{
SubClass1 sub1 (s);
super = &sub1;
}
else if (useSub2())
{
SubClass2 sub2 (s);
super = &sub2;
}
super.someMethod();
需要注意的是,这里的重点是“sub”的构造取决于调用 someFunction() 的结果。 此外,还会有多个类似上面的 if (...) { } 构造,每个构造都基于 SuperClass 的不同 SubClass,基于某些条件创建不同的 Object。
总而言之,SuperClass 有许多子类,我想根据 if 条件创建适当的对象类型,然后使用“超级”对象来操作它们。
这是我的问题,我认为通过执行我所拥有的 sub1(或 sub2 )将超出范围,那么这是否会给我留下一个指向任何内容的指针?
我希望我想做什么是相当清楚的,我只是不确定如何正确编码。感谢您提供任何帮助或建议。
感谢期待
【问题讨论】:
-
是的,它会给你留下一个错误的指针。这将是未定义的行为。如果您希望内存超过创建它的范围,则必须使用 new。