C++基础知识

来源:互联网 发布:杭州阿里巴巴淘宝城 编辑:程序博客网 时间:2024/04/27 22:17

         孙鑫老师的教材是从windows程序内部运行机制讲起,感觉对于初学者有点晕,故我总结时从c++基础说起。      

      C++与C相比的优越性主要体现在封装性(Encapsulation),继承性(Inheritance)和多态性。此章节孙鑫老师主要通过类->封装性,类的继承->继承性,虚函数->多态性。(类和对象此处我不再多叙了)

       首先说封装性,还记得c语言中的结构体吧,结构体不能包括函数,这就注定了它不能描述一个对象的行为。而C++对此进行了改良,在c++里面的结构体是可以包括函数的。如果把c++结构体的 关键字struct换成class,就是一个类的定义了。不同的是struct结构体成员默认为public,而class类默认为private。

        一个类声名了,构造一个对象时,系统会为成员变量分配内存空间,而内存空间的值为一个随机值,这显然不是我们所期望的。所以应该定义一个初始化的函数。可以在构造一个对象后,通过对象调用初始化函数。而在c++中可以在构造一个对象的同时就完成了初始函数的功能,那就是通过构造函数的功能,也就是把完成初始化函数的名字换成类名就可以了。当一个对象生命周期结束时,需要释放它占的内存空间,可以用析构函数,形式:“~类名”,主要的是记住一个类只能有一个析构函数,并且不能带有参数。另外注意的是在类中定义成员变量时不能直接给成员变量赋初值。还有就是每定义一个类时都会有一个特殊指针指向这个类,此指针就是this。

       再来说说继承性,必须先构造父类在构造子类,而析构时却与之相反。在构造对象时调用父类默认构造函数(不带参数的),如果没有不带参数的构造函数时,在构造子类时要进行显示调用父类的带参数的构造函数。另外需要注意的时类的继承访问图形如下表:

                   基类访问特性               类的继承特性              子类的访问特性

                         public                                                                      public

                         protect                          public                                 protect                 

                         private                                                                     不访问

 

                         public                                                                       protect   

                         protect                           protect                               protect                  

                         private                                                                      不访问

 

                         public                                                                       private 

                         protect                           private                               private                 

                         private                                                                      不访问

 

        最后说说多态性,多态性主要通过虚函数表现出来的。多态性的体现是,编译器根据对象的实际类型来确定要调用的是基类还是子类的函数。此处难点在于理解函数的覆盖、隐藏和重载,记住一点就是函数覆盖发生在派生类和基类之间,并且两个函数完全相同且基类该函数为虚函数,否则为隐藏,而重载则是在同一类之间。

另外一点就是引用了,记住一点:引用一旦初始化它就代表一块特定的内存,再一不能代表其他的内存了,多数用在函数的形参上。

       这一节的主要内容就这么多了。

原创粉丝点击