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)
不,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),因此如果您正在尝试实现这一功能,那么这可能是一个选项.