gpt4 book ai didi

c++ - 是否可以在分配期间在 C++ 中给出一个类的定义,这在 Java 中是允许的

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:36 26 4
gpt4 key购买 nike

或者简单地说

我可以做一些事情吗

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

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

最佳答案

不,C++ 没有像 Java 那样的匿名类。

你可以像这样定义本地类:

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

或者可能只是一个嵌套类:

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

public:
A *a;

b(){
a = new my_little_class();
}
};

在 C++03 中,局部类有一些在 C++11 中被解除的限制(例如,它们不能用作模板参数)。

在 Java 中,匿名类有时用于执行其他语言使用匿名函数执行的操作,例如,当您创建 Runnable 的匿名实现时。 C++11 具有匿名函数(也称为 lambda),因此如果这是您想要实现的目标,这可能是一个选项。

关于c++ - 是否可以在分配期间在 C++ 中给出一个类的定义,这在 Java 中是允许的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8335418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com