【发布时间】:2014-11-11 16:05:51
【问题描述】:
我来自 C# 背景,所以我希望这是有道理的。
我有一个基类和一个派生类。我希望能够定义一个对从基派生的任何类进行操作的方法,然后返回对象本身。这是一个例子:
class base
{
public:
virtual void print()
{
cout << "Base" << endl;
}
};
class derived : public base
{
public:
void print()
{
cout << "Derived" << endl;
}
};
int main()
{
derived a;
a.print();
base b = doPrint(a);
b.print();
}
base doPrint(base obj)
{
obj.print();
return obj;
}
我得到的输出是
衍生的 根据 根据我想要得到的是“Derived \n Derived \n Derived”,即我希望对象一直被视为 Derived 类。这很重要,因为它可以返回从基类派生的任何类。
我该怎么做?它与泛型类有关吗?
谢谢
[编辑] 这可以通过将“doPrint”方法放入一个具有我可以分配为派生类的泛型类型的类中来完成吗?” [/编辑]
【问题讨论】:
-
通过引用传递对象。
-
将 doPrint 的签名更改如下:
base& doPrint(base& obj)并像这样定义 b:base& b = doPrint(a); -
在学习一门新语言时,您的第一个参考资料应该是一本书,或者其他不需要人工关注的资源。非常最后的资源是 Stack Overflow。
标签: c++ polymorphism