Be Me in Real Life

做自己,笑不羁

主要内容

这一篇主要总结于第七章”C++高级语法”中的第1-6小节。下文第一节主要介绍面向对象编程(Object Oriented Programming,OOP);第二节简单介绍类的创建和成员的声明、定义;第三四节为主要内容,涉及各种构造函数和运算符重载。

阅读全文 »

华北电力大学《证券投资学》-中国大学Mooc
https://www.icourse163.org/course/NCEPUB-1003480002

这门课通俗易懂讲解证券投资,种类包括:债券、股票、基金和金融衍生品。其中主要以股票为例进行讲解,从基本分析和技术分析两个方面进行剖析。


这门课我在1月底已经上完,现在是把当时写的一些笔记补发出来。除了第一篇当时没有做笔记之外(后面有空我会再看一遍然后补上),后面每一章都总结过知识点,所以这一门课的文章都是整理自当时的笔记。并且暂时没有第一章。

阅读全文 »

本来是用的sm.ms图床,但是后来发现上传之后图片无法显示,以为是图床的问题,所以换成Github图床(后来Github图床也是这种情况,测试后发现很可能是墙导致的)。

简单来说只需要两步:1.创建用作图床的公开仓库并生成token; 2.配置PicGo。即使官方指南和很多文章都给出了教程,但这简单的两步里面有挺多坑。

我在配置过程中主要遇到了以下这些问题:

阅读全文 »

1. 枚举enum

定义时类似于结构体:

1
2
3
4
enum wT{monday, tuesday, wednesday, thursday, friday, saturday, sunday};
wT week;
week = monday;
week = Tuesday;

枚举变量可以给其他变量赋值,但其他变量不能赋值给枚举变量

1
2
3
int a = 1;
// week = a; 错误,其他变量不能赋值给枚举变量
a = week;
阅读全文 »

1.10 NDF和远期利率协议

无本金交割远期外汇交易(Non-deliverable Forwards,NDF)

NDF(Non-deliverable forward):NDF is an outright forward in which counterparties settle the difference between the contracted NDF price or rate and the prevailing spot price or rate on an agreed notional amount.
NDF是一种直接的远期合约,交易对手根据约定的名义金额结算NDF合约价格或汇率与现行现货价格或汇率之间的差额。

简单来说就是类似于汇率远期合约,但是并没有现金交割,只用硬通货结算差额。比如上一节的买英镑远期合约,但是最后到期时只能得到交割时汇率和约定汇率的差额(只能赚到/赔掉差额的部分钱)。
在一些禁止远期外汇交易的国家,NDF很流行,因为它是作为一种避免汇率风险的手段。

为什么要用硬通货只结算差额(而不是全额结算)?
因为有的货币不够“硬”,要这些货币也没什么用,不如用美元结算差额,这些多余的钱以美元的形式还可以花出去。

阅读全文 »

1. 智能指针——指针更安全的解决方案(一)

指针的功能比较强大,但单独使用指针存在一些问题,可能会导致野指针、内存泄露。
因此应该尽量使用两种方法,更加安全地使用指针:

  1. 使用更安全的指针——智能指针
  2. 不使用指针,使用更安全的方式——引用

智能指针需要使用头文件memory。

空指针的表示方法:原始版本中,用指针值NULL代表空指针。但是由于NULL不仅可以赋值给指针,还可以赋值给int等类型的元素,因此存在歧义。后来引入nullptr,用于代表空指针。


阅读全文 »

1.CPP程序的存储区域划分总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int a = 0;				//(GVAR)全局初始化区
int* p1; //(bss)全局未初始化区

int main() //(text)代码区
{
int b = 1; //(stack)栈区变量
char s[] = "abc"; //(stack)栈区变量
int* p2 = NULL; //(stack)栈区变量
const char* p3 = "123456";//123456\0在常量区,p3在(stack)栈区
static int c = 0; //(GVAR)全局(静态)初始化区
p1 = new int(10); //(heap)堆区变量
p2 = new int(20); //(heap)堆区变量
char* p4 = new char[7];//(heap)堆区变量
strcpy_s(p4, 7, "123456"); //这两个语句在(text)代码区

return 0; //这两个语句在(text)代码区
}

同样是指针变量,p1本身存在全局区、p2、p3、p4本身存储在栈区;
而同样被指针指, “123456”存储在常量区(因此p3不能更改里面的值)、p1和p2指向的数字存在堆区、p4指向的字符数组也存在堆区。


另外:栈区中地址从大到小增长,而堆中地址从小到大。

栈和堆相向增长

堆中分为全局初始化区(GVAR)和全局未初始化区(bss)。
由于未初始化的变量只需要用0标记,因此不需要为未初始化的全局变量专门分配存储空间。


阅读全文 »

1. 左值和右值

概念:

一般说法,编译器为左值单独分配了一块存储空间,可以取其地址。左值可以放在赋值运算符左边也可以在右边;
右值指的是数据本身;不能取到其自身地址,右值只能赋值运算右边;

左值代表地址单元,右值代表数据本身。

左值最常见的情况如函数和数据成员的名字;
右值是没有标识符、不可以取地址的表达式,一般也称之为“临时对象”。

比如:

 a = b + c;

&a是允许的操作,而&(b+c)不能通过编译,因此a是一个左值,而(b+c)是一个右值。

1
2
3
4
char strHelloWorld[] = {"helloworld"};
char* pStrHelloWorld = "helloworld";
pStrHelloWrold = strHelloWorld; //指针变量的值允许改变
strHelloWorld = pStrHelloWrold; //strHelloWorld是右值,代表字符串的值,不可以被赋值等

理解C和C++中的左值和右值
https://blog.csdn.net/xuwqiang1994/article/details/79924310


阅读全文 »

1.1 衍生品的概念

1. 概念

衍生品:An agreement between two parties which has a value determined by the price of something else.
一种双边协议,其有价值,并且价值由其他东西决定。(注意黑色字体的关键词)

典型的例子如对赌协议:我赌明天股票大盘指数会跌,你赌会涨,赌注为10元。
相反的例子为股票指数,它可能有价值和协议,但他的价值一定由自身决定。因此,它是基础金融工具。

基础金融工具中,股票指数和股票、债券、货币、基金不同的地方在于,它是虚拟工具,不是真实的金融工具。它的点数本身是没有价值的,而是通过点数和货币的换算(乘数)才能实现价值。

阅读全文 »

1.数组下标非对称的原则

计算“满足x>=16且x<=37的x有多少个”时,容易计算成37-16=21个。
由于差一错误(off-by-one error),遍历序列容器、解决问题时最好使用数学上的左闭右开[a,b)的区间。
问题可以转换为:“满足x>=16且x<38的x有多少个”,此时计算得38-16=22个。
应该尽量全部转换为左闭右开[a,b)的区间,保证问题和解题的统一性,避免出错。

1
2
3
4
5
6
7
8
9
//推荐方式
for (int index = 0; index < 10; ++index)
cout << a[index] << " ";
cout << endl;

//不推荐方式:没有统一左闭右开[a,b)的区间、后置++降低了性能
for (int index = 0; index <= 9; index++)
cout << a[index] << " ";

阅读全文 »
0%