小编Dud*_*udu的帖子

一个对象是否被视为“外部对象”,即使它在自己的类中使用?

#include <iostream>
using namespace std;
class B {
protected:
    int x;

public:
    B(int i = 28) { x = i; }
    virtual B f(B ob) { return x + ob.x + 1; }
    void show() { cout << x; }
};
class D : public B {
public:
    D(int i = -32)
        : B(i)
    {
    }
    B f(B ob) { return x + ob.x - 1; } //line 19
};
int main()
{
    B *p1 = new D, *p2 = …
Run Code Online (Sandbox Code Playgroud)

c++ oop

4
推荐指数
1
解决办法
81
查看次数

不明白这个集合类语法

class Collection c where
  empty :: c key value
  singleton :: key -> value -> c key value
  insert
    :: Ord key
    => key -> value -> c key value -> c key value
  lookup :: Ord key => key -> c key value -> Maybe value
  delete :: Ord key => key -> c key value -> c key value
  keys :: c key value -> [key]
  values :: c key value -> [value]
  toList :: c key value …
Run Code Online (Sandbox Code Playgroud)

haskell

2
推荐指数
1
解决办法
86
查看次数

如何确定函数的编写方式以便它们兼容组合?

假设我们有这两个函数

f1 :: Int -> [Int] -> Int -> [Int]
f1 _ [] _ = []
f1 x (h:t) y = (x * h + y):(f1 x t y)

f2 :: [Int] -> Int
f2 (h:t) = h
Run Code Online (Sandbox Code Playgroud)

为什么有效(f2 . f1 1 [1..10]) 1,但(f2 . f1 1) [1..10] 1不起作用?

haskell

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

const 标签不一致(?)

为什么这是合法的

int i=4;
const int *l=&i;
cout<<*l;
i=6;
cout<<*l;
Run Code Online (Sandbox Code Playgroud)

(显示 46)

但这不是吗?

int i=4;
const int *l=&i;
*l=4;
Run Code Online (Sandbox Code Playgroud)

(根据我的理解,这两个在概念上是相同的)

我理解这两个例子的方式是两者都不应该被允许,但前者有效。为什么是这样?

c++

0
推荐指数
2
解决办法
84
查看次数

标签 统计

c++ ×2

haskell ×2

oop ×1