c++ - 在 C++ 中是否可以在初始化时覆盖虚拟方法?

标签 c++ oop initialization

当我编写 java 时,可以在初始化类时覆盖抽象方法。我认为它看起来像这样:

AbstractClass object = new AbstractClass(){
   void inheritedMethod(){
      ...
   }
};

这在 C++ 中是否可行,如果可行,语法是什么?

最佳答案

当您在 Java 中执行此操作时,您正在创建一个具体的类,该类是在本地定义的,没有名称。

您可以在 C++ 中使用局部类定义后跟变量声明来接近这一点。

    class Concrete : public AbstractClass {
        public:
        void inheritedMethod() {
            cout<<"inherited method";
        }
    } object;

例如,在上下文中:

class AbstractClass {
public:
    virtual void inheritedMethod() =0;
};

void bar() {
    class Concrete : public AbstractClass {
        public:
        void inheritedMethod() {
            cout<<"inherited method";
        }
    } object;

    object.inheritedMethod();
};

关于c++ - 在 C++ 中是否可以在初始化时覆盖虚拟方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16693582/

相关文章:

android - 如何使用(智能引用)代理设计模式实现缓存机制?

c# - 如何有效地学习/理解 C# 中的 OOP?

java - 部分代码未初始化

c++ - 错误 : ‘template’ (as a disambiguator) is only allowed within templates

c++ - QNetworkAccessManager ssl 握手失败

C++ 添加对象到数组

python - 在tensorflow中初始化变量、变量范围和import_graph_def

从 const int* 到 int* 的 C++ 转换处理意外结果

c++ - 是否有一种模式可以跟踪容器中当前选定的项目? state 适合这里吗?

c - 初始化结构成员时出错