Lua语法入门

之前在用vim的时候发现很多插件的配置文件是用Lua写的,还是挺想了解一下的。

💡 阅读更多

Regex正则表达式Memo

正则表达式实在是记不住…

(学过自动机后忽然发觉这玩意跟正则表达式很像啊,不过还是没能记住…

💡 阅读更多

vim快捷键简单cheatsheet

每次在使用Linux终端中修改文件总会发现自己浪费很多精力在回忆VIM的快捷键上。简单写个CheatSheet,为了在想不起来的时候来这边看一下。

💡 阅读更多
简单记录一下Makefile和CMake的用法

浅玩一下vuepress

上个学期的专业前沿课要求做的网站,由于正好卡在期末,没有太多时间制作,浅试了一下 vuepress。确实是相当方便,特别是只需要文档的网页,上手特别容易,基本只要照着文档中的内容改配置文件即可。但是缺点就是可以自定义的地方比较少,样式也很烂大街。

不过对于随便敷衍一下作业的也够了

网站部署到了 GitHub Page 上,放个链接 可以点这个

💡 阅读更多

TPO4-5Listening听写script存档

真的觉得听写没什么用,而且太浪费时间和精力了,到后面就完全是机械式听写了,根本不想思考了。准备改用精听了。

💡 阅读更多

TPO1-3Listening听写script存档

练了一下 TPO 听力的听写,在这边存个档。

TPO2 的没怎么写,因为 OG 上听力部分的练习就是 TPO2 的,大部分 script 都已经看过了所以懒得做了。

💡 阅读更多

对copy-constructor的一点理解

Memberwise Initialization

在默认情况下,当以某个class object作为另一个object的初值时,会发生成员逐一初始化,

1
2
Example E1(8);
Example E2 = E1;

class data member会被依次复制,即对象中的每个成员都会被复制到另一个对象的相应成员上。

对于这种情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Matrix {
public:
Matrix(int row, int col) : _row(row), _col(col)
{
_pmat = new double[row * col];
}
~Matrix()
{
delete [] _pmat;
}
private:
int _row, _col;
double *_pmat;
};


// in this case

Matrix mat(4, 4);
//此处constructor发生作用
{
Matrix mat2 = mat;
// 此处进行了default memberwise initialization
// ...
// 此处,mat2的destructor发生作用。
}

根据默认的成员逐一初始化,mat2._pmat = mat._pmat,所以这两个指针指向了同一个堆内存空间内的数组,当mat2的析构函数发生作用时,该内存空间便被释放,但是mat的指针还是指同一空间,此时再使用这个指针就会产生严重错误。

💡 阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×