首页 > 代码库 > C++重要知识点整理-思考

C++重要知识点整理-思考

        当你看到标题,有兴趣打开本文,那我推测,你应该是准备考“二级C++等级考试”。如果我猜对了,希望在下文对你的考试有所帮助;如果我猜错了,你不妨也用短暂的时间看看,这在编程实践中也是需要注意的,你就当复习、加深,找共鸣吧。

(一)构造函数——从最易遇到的问题说起

       (1)构造函数的初始化列表

         1)构造函数:Point(float a,float b){x=a;y=b;}                     

         2)用初始化列表改写:Point(float a,float b): y(b), x(a){}    

             1.1   上面是同一个构造函数的两种写法。其中xy是提前定义好的变量,ab是构造函数的参数。

             1.2   由①②推广出Point(float a,float b): y(b){x=a;} 成立 ③

             1.3    {}是构造函数体。

         :后面的y(b),x(a)就是所谓的初始化列表。此处有个考点,在构造函数体中,已经初始化的成员,在初始化列表中不可重复初始化;反过来说,在构造函数体中没有初始化的成员,必须在初始化列表中写出,并特别注意在初始化列表前需用“:”冒号做分隔和标示。

特注:当xy是被定义为常数据时,常数据只能用初始化列表进行初始化(②或③的形式)

class Point 

{

     private:

          float x,y

     public:

          Point(float a,float b): y(b), x(a){}   ’或Point(float a,float b): y(b){x=a;}

                                                                    ’不可错写成Point(float a,float b){x=a;y=b}

}



(2)继承关系下的构造函数的写法

class Person

{

     private:

         char name

         int age

     public:

          Person(char a,int b):name(a),age(b){}

}

class Student : public Person

{

           float score    //默认为(Private)私有成员

      public:

           Student(char x,int y,float z):Person(x,y),score(z){}

}

大家对比不难发现,这里的特点是:

      (1)派生类(子类)Student的初始化列表中[Person(x,y),score(z)],按照基类的构造函数,将对应参数直接带给基类中。

      (2)再对派生类中新派生的成员逐一初始化,当然,新派生的成员的初始化可以再构造函数体“{}”中,也可以再初始化列表(“:”之后)中。

(二)继承——易记不易懂(不好理清)

      (1)继承的定义

定义:子类从父类那里继承有用的数据成员和成员函数。

      (2)继承的分类

单继承和多继承

      单继承:只有一个直接父类,例class A : public B,读作“类A公有继承于类BA为子类,B为父类)”。

      多继承:有两个及以上多个直接父类,例class A:public Bpublic C,读作“类A公有继承与类B同时公有继承于类C”(第二个public可省略不写)。

      (3)类成员访问权限

类成员有三种访问权限:public(公有的)、private(私有的)、protected(保护的)

class Example

{

   private:

     ?     //这里的成员只能使用于本类,不能被派生类访问,本类的对象也不能直接访问

   protected:

     ?     //这里的成员可以被本类和派生类直接访问,但本类的对象不能直接访问

   public:

     ?     //这里的成员既可以被本类和派生类直接访问,也可以被本类的对象直接访问

};

 

表 派生模式对继承成员访问权限的影响

继承
方式
基类
public
基类
private
基类
protected
说明
publicpublicprivateprotected访问权限不变
privateprivateprivateprivate全部变成私有的
protectedprotectedprivateprotected公有的变成保护的,其余不变


 注:类的对成员的访问,就是拿来就用,为了避免成员明的冲突,可以使用作用域限制符“: :”。

      这里需要切记一句话:任何类的对象,只能访问该类的公有成员。

      【对这句话的辩证理解是:类实例化(new)的对象,不能直接访问私有成员(private)和保护成员(protected),而对象对这些成员的使用是通过公有成员函数在类体中操作的。也就是说,如果类里面的非公有成员通过现有的公有成员函数没法使用,这时,只能通过修改类里面的内容,重新建立调用机制来使用。成员包括数据成员(我们常在类中定义的变量或常变量)和成员函数;如果子类与父类是公有继承的关系,那么父类的公有成员同时也是子类的公有成员。】

 

整理一下“访问”的问题:

成员访问1)采用:对象名称.成员名称 或 引用名.成员名称 或 指针—>成员名称。

                2)类访问成员:直接使用“数据成员变量名称”、“成员函数名称”进行调用。

 

(三)推荐和共享

        一本好书,能得到适当的点拨,能把简单的事情简单化(相对于有的书是,简单的事情复杂化,弄得读者一头雾水,最后结论是这个知识真难),带领读者理解自然流畅地获取知识。再次,推荐一本书《C/C++程序设计实用教程》王大伦,清华大学出版社 2006.

C++是对C的扩展,可以算是一个增强版。本书更多说的是C++,因为,说了C++就包括了C在内,至于不同的地方,有简单的对比提示,而且不同点实际是很少的。本书不管是用于应试还是当着对这两门语言的基础进行加深,都是挺不错的,因为,其中的知识点规整、明晰,举例也是很干练的,相当具有代表性。本文中的例子就来自于本书。

C++重要知识点整理-思考