c++面向对象的三大特征:
1. 封装性:将客观事物抽象成类,每个类对自身的数据和方法实行 protection(private, protected,public)。
2. 继承性:广义的继承有三种实现形式:实现继承(使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。
3.多态性:是将父类对象设置成为和一个或更多它的子对象相等的技术。用子类对象给父类对象赋值之后,父类对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。
1——1.重载性:
后置++的重载
方式:构造一个新对象,将原对象++,返回新对象。
这样返回的是不加的,而源对象++了。
代码实现:
point operator++(int) //后置++
{ point a = *this; // 或者++a;
a.x++;
a.y++;
return a; }
然后是输出的重载
方式:取出iostream里的定义,用它来输出,并将它返回
代码实现:
friend ostream& operator<<(ostream &o,Grid &g)
{
o<<"["<
}
几个常用知识点:
1.概念理解:
多态性可可以简单的概括为“一个借口,多种方法”,在程序运行的过程中才决定调用的函数。
虚函数就是允许被其子类重新定义的成员函数。而子类重新定义父类虚函数的做法,称为“覆盖”或“重写”。
覆盖是指子类重新定义父类的虚函数的做法。
重载是指允许存在多个同名函数,而这些函数的参数表不同。
2.const的用法
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)指针:可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)函数声明:const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)类的成员函数:若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
(5)类的成员函数:有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。(这个是重点)
3.拷贝构造函数和赋值运算符
拷贝构造函数和赋值运算符重载有以下两个不同之处:
(1)拷贝构造函数生成新的类对象,而赋值运算符不能。
(2)由于拷贝构造函数是直接构造一个新的类对象,所以在初始化这个对象之前不用检验源对象是否和新建对象相同。而赋值运算符则需要这个操作,另外赋值运算中如果原来的对象中有内存分配要先把内存释放掉.
注意:当有类中有指针类型的成员变量时,一定要重写拷贝构造函数和赋值运算符,不要使用默认的。(因为拷贝构造是新建对象,而指针只是改变地址,所以容易出现改原对象,新建也改的情况。
部分内容整理于大牛博客:https://blog.csdn.net/yxtxiaotian/article/details/51371986