# C++ 笔记
> [TOC]
## Notes:
### Pylomorphism
- [Polymorphism in C++ - tutorialspoint](https://www.tutorialspoint.com/cplusplus/cpp_polymorphism.htm)
- purpose: @ErBaiWu
- static/early binding: @shasha
- bind/linkage 的概念不是 Class 和 object 之间的,而是 Class 和 member function之间的关系。
- dynanic/late binding: @shasha
- virtual function: @ErBaiWu
- 有了virtual 代表该function可以被子类覆盖。
- 没有virtual 则静态绑定。
- 子类必须 overwrite 父类 pure virtual function
### Call C from C++
- [Using extern "C" - YouTube](https://www.youtube.com/watch?v=QNZWMw8wWhc&list=PLypxmOPCOkHXJqwYuIpLtG4mXxRJBacqx&index=10)
- ```bash
vi addnum.c # define function addnum()
gcc -c -Wall -Werror -fpic addnum.c # .c -> .o
gcc -shared -o libaddnum.so addnum.o # .o -> .so
vi addnum.h # declare function addnum
vi foo.cpp # use addnum from .c using extern "C"
g++ -o foo foo.cpp -L. -laddnum # compile foo using .so
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
# OR
g++ -o foo foo.cpp addnum.o
```
### Others
- Binary Operator Overriding: 自定义类型的二元操作符(+ - * /
## Open Questions:
- [ ] when will we be using private constructor/destructor? @ErBaiWu
- [ ] do we have to make it `public` when we want to inherit from a baseClass? `Class ClassSub: public ClassSuper`
## References:
- [C++ Programming in Linux Tutorial - YouTube](https://www.youtube.com/playlist?list=PLypxmOPCOkHXJqwYuIpLtG4mXxRJBacqx)
- [C++ - Tutorialspoint](https://www.tutorialspoint.com/cplusplus/index.htm)
## Chat Zone
> [time=Mon, May 4, 2020 11:43 AM][color=#4f2cc1]
> 二百五何在??
>
---
> [name=Xiaosha Xing][color=#4f2cc1]
>
> 😝
> [name=Jialiang]
>
> 我是🐷