0%

我不会C++.html

虽然俺不想学C++,但是在使用中(室友询问OOP时)发现自己不会C++,于是本着求知的心态记录一下C++中进阶的复杂的操作。

OOP相关

private, protected

public: 可以被任意实体访问

protected: 只允许子类及本类的成员函数访问

private: 只允许本类的成员函数访问

虚函数

C++多态 (Polymorphism) 是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖 (override),或者称为重写。

最常见的用法就是声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,动态绑定。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。如果没有使用虚函数的话,即没有利用C++多态性,则利用基类指针调用相应的函数的时候,将总被限制在基类函数本身,而无法调用到子类中被重写过的函数

移动构造函数

复制构造函数是深复制(新开辟指针对应的内存);移动构造函数是浅复制,并且复制后要销毁原变量。注意处理“自己移动到自己”的问题。

同时也要区分构造函数和赋值,在构造函数内,this的初始内容都是无意义的垃圾,不用管。

STL相关