gpt4 book ai didi

c++ - C++ 中的抽象类初始化

转载 作者:太空狗 更新时间:2023-10-29 20:38:27 27 4
gpt4 key购买 nike

在 Java 中,您可以初始化抽象类,而无需通过实现抽象方法来派生类。例如:

public abstract class A { public abstract void a(); }
public class Test {
public static void main(String[] args) {
A b = new A() { @Override public void a() { System.out.println("Test"); } }
}
}

我的问题是:你能用 C++ 做类似的事情吗?

最佳答案

C++ 不支持这个。

但 C++ 通常较少使用 OOP(在“使用虚函数”的意义上使用“OOP”)。特别是,自 C++11 以来,lambdas 为 Java 中许多基于 OOP 的模式提供了强大的替代方案。

这是一个非常简单的例子:

#include <functional>
#include <iostream>

void f(std::function<void()> a)
{
a();
}

int main()
{
f([]() { std::cout << "Test\n"; });
}

或者:

#include <iostream>

template <class Operation>
void f(Operation operation)
{
operation();
}

int main()
{
f([]() { std::cout << "Test\n"; });
}

事实上,如今 lambda 在编程中变得如此流行,以至于 Java 8 也支持它们:

https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

关于c++ - C++ 中的抽象类初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501100/

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