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<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();
};