是否可以在分配期间在C++中给出类的定义,如java中所允许的那样

use*_*504 5 c++ anonymous-class

或者简单地说

我能做点什么吗

class A {
public:
  virtual void foo() = 0;
};

class B {
  public:
    A *a;
    b(){
       a = new A() { void foo() {printf("hello");}
    }
};
Run Code Online (Sandbox Code Playgroud)

R. *_*des 7

不,C++没有像Java这样的匿名类.

您可以定义本地类,如下所示:

class B {
  public:
    A *a;
    b(){
       struct my_little_class : public A {
           void foo() {printf("hello");}
       };
       a = new my_little_class();
    }
};
Run Code Online (Sandbox Code Playgroud)

或者只是一个嵌套类:

class B {
  private:
    struct my_little_class : public A {
        void foo() {printf("hello");}
    };

  public:
    A *a;

    b(){
       a = new my_little_class();
    }
};
Run Code Online (Sandbox Code Playgroud)

在C++ 03中,本地类在C++ 11中有一些限制(例如,它们不能用作模板参数).

在Java中,匿名类有时用于执行其他语言对匿名函数的操作,例如,当您创建匿名实现时Runnable.C++ 11具有匿名函数(也称为lambdas),因此如果您正在尝试实现这一功能,那么这可能是一个选项.

  • @ user210504:Dunno,我没有实现`foo`s的经验.换句话说,我不知道你在实施什么. (4认同)