Skip to content

Ashitemaru/OOPHomework

Repository files navigation

OOP Homework

Introduction

主要上传2020年THU开设的OOP课程所布置的作业答案代码以及UOJ上另外一些题目的答案代码。

Updates

2020.07.27

更新了目前已经有的答案代码。

2020.08.11

简单做了几道题,结果发现自己C++的语法已经忘得差不多了,有些奇怪的bug还是整不动;

  • #27交上去就是Dangerous syscalls

  • 计算图那条到现在还只有10分

感觉再这样下去OOP要挂科了啊。

2020.08.16

据说8.23考OOP,瞬间有点慌张,就先做了几道题练练手;还好收效比之前要好得多;

不过倒是有点懵,感觉C++的内存管理和多态实在是太细节了,好多时候都写得一愣一愣,AC了都弄不明白;

比如说这样的一个东西吧:

class Base {
public:
    virtual std::string get() {return "Base";}
    virtual ~Base() {
        if (get() == "Base") std::cout << "Alert" << std::endl;
    }
};

class Derive: public Base {
public:
    virtual std::string get() {return "Derive";}
    virtual ~Derive() {}
};

int main() {
    Base* d = new Derive;
    delete b;
    return 0;
}

这就是简单的“虚机制不在构造函数以及析构函数之中起作用”的DEMO代码,然而我在做题的时候却忘掉了,导致一道水题卡了好一会;

反正好多细节上的东西要复习了。

2020.08.21

写了第37题的简单题目解答;并且简单做完了38题,也算是学到了数组的引用这个奇怪的小知识点:

int a[5] = {1, 2, 3, 4, 5};
int (&ref)[5] = a;
// ref是数组的引用

2020.08.22

OOP明天考试了,就拼命刷了几道题=_=

计算图那条算是我算法想错了,表达式求值那道题也确实是我过于智障(丢脸代码已删)

明天四条,求求AC三条吧(其实全AC我也是很乐意的)

2020.08.23

今天是OOP考试了,现在是16:23,目前四道题已经全部AC,考虑到OJ100%,也就是代表我OOP课程圆满结束了。所以也就在readme里面写一下这次考试的感觉吧。

A题是白送的,直接写就好了。

B题虽然给了一大堆背景,实际上还是考察的dynamic_cast转换指针失败返回nullptr,再注意一下动物只能移动,加一个std::move就可以直接AC了。

C题考策略模式,实际上框架都给你写好了,照着稍微写写盲交就能AC。

这三道题用了我半小时,所以送分还是到位的。

D题又是喜闻乐见的“小明的xxx”,这次考了动态类型。四个subtask分别考构造、operator+=的编写、VectorContent类的编写以及operator[]的编写。

题目考查的一个标准就是内存不能泄漏,但实际上到最后给你的代码里面已经用注释写好了“为什么不试试shared_ptr呢?”(直球)

之后就是把原来代码码风改改,小错误修修(基本上都是IDE自动提示的错误),之后就是巨大使用dynamic_cast硬搞(我觉得可能是我的问题)

最后还有几个地方稍微偷鸡,比如用std::cout代替了out,以及故意不用const Content&之类的(不过OJ100%不就应该这样吗?)

小注解:关于OJ100%偷鸡,之前在魔兽争霸II那道题里面我倒是真·偷鸡了一把(不要打我,原题要考的是装饰器

到这里就暂时结束了,以后这个仓库应该就不会再更新了吧qwq

About

Some codes of my OOP homework.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published