Osk*_*uro 2 c++ polymorphism inheritance
经过很长一段时间我几乎完全使用Java后,我又回到了使用C++的时候,所以当我尝试用Java做的事情但却不能用C++做的事情时,我会遇到麻烦.
在这种情况下,在Java中,我可以这样做:
class MyClass
{
public void myMethod();
}
// -------
MyClass myObject = new MyClass(){
myMethod()
{
// Do stuff
}
};
Run Code Online (Sandbox Code Playgroud)
本质上,我在声明MyClass对象时实现myMethod()的逻辑(注意我的语法可能已关闭).
我试图找出是否有相当于C++的东西
我的具体用例是一组服务器/客户端体系结构的测试,其中Test对象扩展基本的Server/Client抽象类并实现控制其行为的虚拟方法.我需要为每个特定测试修改此行为,并且在声明Test对象时能够"内联"这些实现,而不是必须为每个特定测试实现Test对象的多个变体,这样做会很方便.
谢谢!
编辑:我已经实现了Smeeheey的答案如下,并且像一个魅力
int main(...)
{
class TestServer : public BaseServer
{
public:
TestServer(...) : BaseServer(...){...} //Constructor
void virtualFunction(...){...} // Extended function
};
TestServer testInstance(...);
// Execute tests using testInstance object
Run Code Online (Sandbox Code Playgroud)
}
Sme*_*eey 10
实际上你可以非常接近,使用匿名的本地结构/类:
class MyClass
{
public:
virtual void doStuff() = 0;
};
void doStuffWithMyStruct(MyClass& s)
{
s.doStuff();
}
int main()
{
class: public MyClass
{
public:
void doStuff() override
{
std::cout << "Hello" << std::endl;
}
} s;
doStuffWithMyStruct(s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,在上面,变量s具有匿名类型,与Java非常相似.可以通过引用其基本类型来访问其函数.现场演示这里.
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |