C++声明对象时可以实现虚方法吗?

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非常相似.可以通过引用其基本类型来访问其函数.现场演示这里.