C++ 面向对象编程

构造函数

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

析构函数


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

类的参数列表的使用:

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  动态类型转换 Csub* obj= dynamic_cast(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 void _typefunc(Type1 a,Type2 b)

                      {  

                          return  a+b;

                      }

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

                            template class A

                              {

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

                                      A();

                              };




 

你可能感兴趣的:(C++ 面向对象编程)