c++面向对象程序设计学习总结

C++面向对象程序设计已经告别一段段落,下面我将结合老师所交给我们的知识和课本内容进行一次复习总结。

首先是运算符重载,其中必须是成员函数得的有=,[],->,->*,一元运算符和符合赋值运算符最好是成员函数。其他二元函数和输入输出运算符可以设为非成员函数。在使用运算符时应该善用const,防止对象的值遭到修改。

下面写一下主要的几个重载运算符的声明:

friend istream& operator>>
(istream & in,class a);

friend class operator+(const class a,const
class b);

friend ostream& operator<<(ostream&ou,class
aa);

并且大多数的二元运算符和输入输出运算符都是有返回值的。

派生类继承基类的过程中有三种方式,public,protected,private,一般来说,我们会选择public,对于public来说,基类中的private成员是被隐藏的。也就是说我们如果想要修改或者得到private的内容就必须曾加get与set函数。

如果派生类中没有显示的调用基类的构造函数,编译器会调用基类的默认构造函数,注意如果基类不存在默认构造函数那么会出现错误。

构造函数调用顺序,基类,成员类,派生类。析构函数反之。

并且为了防止多重定义出现的二义性可以将积累设置为虚基类

Class a();

Class b :vritual public
a{};

Class c : vritual public a{};

Class d:public b:public c{};

无论虚基类出现在继承层次的那一个位置上,它们都是在非虚基类之前被构造。

替代原则,任何需要基类的地址或者引用的地方都可以由其公有派生类成员来代替相应地址或者应用来代替。一般不使用对象,因为会出现对象切片的现象。并且私有继承和保护继承也不可以用派生类到基类的类型转化。使用派生类指针指向基类指针类型转化只是简单的改变地址类型。使用不同的方式解读同一段内存中的内容并不会切除对象中的多余内容。基类的成员被继承时,在派生类对象中封装着一个无名的基类子对象,派生类对象的存储空间从首地址开始存放这这个基类的子对象。因此,向上类型转化时,派生类对象能够获得足够信息来进行对象切片对基类指针指向派生类。如果想要在派生类中覆盖积累的成员函数,派生类对象需要返回值,参数列表完全相同。并且除了向上类型转化,在第十章也有向下类型转化。dynamic_cast。使用时需要注意必须对含有虚函数的类层次的进行操作。必须检验是否为0后使用。

Prog pm=dynamic_cast>pe;

构造函数不能是虚函数,析构函数可以是虚函数。并且析构函数最好声明为析构函数。

定义纯虚函数的方法

Vritual void get ()=0;

抽象类目的是为派生类提供一个接口。其中至少含有一个纯虚函数。当需要对一组具体的类的共性进行抽象,描述类的共同接口时需要抽象类。

你可能感兴趣的:(c++面向对象程序设计学习总结)