小编GEL*_*GEL的帖子

Haskell中的OOP样式继承

在C#中,我可以声明以下内容

class A {
    int Field;
}

class B : A {
    int Field2;
}

static int f(A a) { return a.Field; }
static int f(B b) { return a.Field + b.Field2; }

static void Main(string[] args) {
    A a = new A() { Field = 1 };
    A b = new B() { Field = 1, Field = 2};

    Console.WriteLine(f(a) + f(b));
}
Run Code Online (Sandbox Code Playgroud)

在Haskell中,我会输入上面的内容

data A = A { field :: Int } | B { field :: Int, …
Run Code Online (Sandbox Code Playgroud)

c# oop haskell

5
推荐指数
1
解决办法
838
查看次数

使用子类调用时,重载的函数模板匹配模板而不是基类

请考虑以下代码:

#include <cstdlib>
#include <iostream>

using std::cout;
using std::endl;

class A { 
public:
    virtual ~A() { 

    }
};

class B : public A {

};

void foo(A& a) {
    cout << "A&" << endl;
}

void foo(const A& a) {
    cout << "const A&" << endl;
}

void foo(A* a) {
    cout << "A*" << endl;
}

void foo(const A* a) {
    cout << "const A*" << endl;
}

template <class T>
void foo(T& a) {
    cout << "T&" << …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
59
查看次数

标签 统计

c# ×1

c++ ×1

haskell ×1

oop ×1