美文网首页
C++ 面向对象编程

C++ 面向对象编程

作者: 魁犸 | 来源:发表于2017-07-22 01:11 被阅读21次

    构造函数

    拷贝构造: 用一个对象 实例化另外一个兑现的时候会进入构造

    析构函数

    类的成员变量 只能在构造函数初始化(静态成员变量除外)

    类的参数列表的使用:

    person(int age,float height):_age(age),_height(height)

    Const的用法:

    1.const 修改变量 变量的值不能被修改

    2.const 修饰函数的参数 表示在函数体内参数不修改

    3.const 修改类的成员变量 该变量的初始化 必须要在参数列表中初始化

    4.const 写在函数的后面 “void test() const” 函数只能使用类的成员变量 不能改变

    5. const 修饰类的对象时 该对象只能调用 带有const 的函数   

    类的强制类型转化:

          

    静态函数 & 友元函数

     Class Preson{}

        1.静态函数 的调用(::)  静态函数 只能访问静态变量  只能调用静态函数 和全局函数

       2.友元函数  friend

    类的继承

    类函数的重载和覆盖

       函数的覆盖 子类的函数和父类的函数完全一样的化 子类的函数覆盖父类的方法

       父类的指针 或引用 可以指向子类的对象

    rtti   run time type information

    dynamic_cast<T>  动态类型转换 Csub* obj= dynamic_cast<Csub*>(obj1)

    当用到rtti 时Base类必须包含虚函数

    虚函数(virtual )

    析构&虚构造

     构造函数不能是虚函数  析构函数可以为虚函数

    当类有派生时 要注意把Base的析构函数声明为虚函数。

    纯虚函数&抽象类

       如果一类中包含纯虚函数 则这个类为抽象类 

       抽象类不能被声明和初始化  只能作为基类使用,如果继承抽象类的子类没有实现基类的纯虚函数则 该子类也时抽象类。

      纯虚方法的定义

           virtual void FunctionName(int i)=0;

    内存的使用:

         new  delect 和 malloc free  两组申请内存和释放内存的区别:

             1. new  和 delect 是C++的内存管理api ,malloc  free 是C的原生API 所以在C++中使用的时候要添加头文件

             2. new 和 delect 申请和释放内存的对象是一个类时,会调用这个类的构造函数和析构函数     malloc 和 free 不会调用 类的构造函数和析构函数

             3. malloc 和 free 申请内存的效率更高

             4. 在面象对象编程的过程中推荐使用new 和delect 来管理内存

    命名空间的使用:

          1.命名空间的定义可以进行分级定义命名空间

          2.命名空间不建议使用为全局的(即写在所有函数体外   建议放在类的内部,或函数体的内部使用)

    C++的异常和处理

          定义抛出异常的函数  void test(int i) throw(char * exp)

          实现定义的函数      void test(int i){  if(...){ throw "error..."}else{...} }

          抓取异常    try { test(2)} catch( char* exp){}

          需要注意: try{} catch{} catch{}   可以包含多个catch

    C++ 模板

              函数的模板(模板函数)定义: 

                           template < typename/class  形参>

                           返回值类型  函数名(参数列表)

                         template <class Type1,class Type2 > void _typefunc(Type1 a,Type2 b)

                          {  

                              return  a+b;

                          }

                 类的模板(模板类)定义:

                                template <class A> class A

                                  {

                                          public:T g(T a,T b);

                                          A();

                                  };



     

    相关文章

      网友评论

          本文标题:C++ 面向对象编程

          本文链接:https://www.haomeiwen.com/subject/egbgpttx.html