C++复习
一 面向对象(oop)
1.封装
2.继承
基类---->派生类
3.多态:派生类中可能出现与基类同名的方法。
针对基类与派生类同名的方法,派生类要有自己的行为,必须要覆盖基类的方法。
二 虚函数
virtual funname(。。) // 基类允许实现该方法
纯虚函数:virtual funname()=0 //基类不存在对该方法的实现。
一个类中包含了一个纯虚函数,那么该类叫抽象类。 抽象类不能实例该类的对象。
如果派生类也没有去实现基类中的纯虚函数,那么该派生类也是一个抽象类。
三 多态(override)要和函数的重载(overload)区分
1.多态是在存在继承关系的类中,看是否有相同的方法。
2.重载是在一个类中去比较。
a.参数的数据类型不同
b.参数的个数不同
c.方法名一定要相同
四. 继承的三种方式
private:
private ---------->不能继承
public ----------> private
protected ----------> private
public:
private ---------->不能继承
public ---------->public
protected ---------->protected
protected:
private ---------->不能继承
public ---------->protected
protected ---------->protected
private:只能在本类中访问私有成员变量或私有的成员函数
public: 任何一个地方都可以访问
protected:本类中可以访问,具有继承关系的类都可以访问
五.如果非要在一个类中访问某个类的私有变量或函数
1.采用友元函数
class A
{
friend int funname(); //该函数可以访问A类的私有变量及私有函数
};
2.采用友元类
class A
{
friend class B; //B类可以访问A类的私有变量及私有函数
};
六.符号重载特点:
1.只是给C++原有符号增加新的功能,并不是创建一个新的符号
2.符号优先级不能改变
3.一元符号仍然是一元符号。
符号重载的方式:
1.成员函数重载
2.友元重载(<< ,>>这两个符号只能通过友元重载)
七.引用和指针的区别:
1.引用变量不需要开辟空间,而指针变量肯定占用了空间
2.引用变量一定要初始化,指针变量不要求初始化
3.引用变量初始化后就不能再改变,而指针变量可以重新指向新的地址
引用一般用在函数的参数与返回值:int & fun(int &a)
八.const变量
1.const变量存在静态全局区
2.const变量一定要初始化。
3. const int *p; // *p为常数,p可以指向其他地址
int * const p; // 指针p为常数,指向的地址一旦确定就不能修改,p指向的地址里保存的值可以修改。
4.const在类中使用的特点:
a.类里面使用const
int fun() const // 只在定义时加该关键字,实现不需要该关键字
b.对象使用const(常对象)
1.不能修改该对象中的成员变量
2.常对象只能调用常函数(因为常函数也不修改成员变量);
九.static在类中使用
1.静态成员变量只能用在静态函数中
2.静态对象只能调用静态函数
3.静态函数中不能调用非静态函数
static int funname() // 只在定义时使用该关键字,实现时不需要
静态变量和静态方法是属于类自己的,不是属于对象的,在静态方法中不能使用this指针。