contest常量
C语言中的const变量
C语言中const变量是只读变量,有自己的存储空间
C++中的const常量
可能分配存储空间,也可能不分配存储空间
当const常量为全局,并且需要在其它文件中使用
当使用&操作符取const常量的地址
占位符,需要赋值,即使不用;如果用默认值给占位符,调用此函数,可赋值,也可不赋值
引用
/*引用 1、普通引用必须初始化,引用时依赖于某个对象
2、引用做函数参数时,声明时不需初始化
3、可以给引用再次添加应用*/
int a =10;
int& b = a;
int &c = b;
cout<<"a="<<a<<" b="<<b<<" c="<<c<<endl;
b = 20;
testRefs(a,b);
cout<<"a="<<a<<" b="<<b<<endl;
int m,n;
testRefs(m,n);
cout<<"m="<<m<<" n="<<n<<endl;
常量指针和指针常量
/*常量指针,指向的内存空间不可修改,指向可以修改 const int *p1 */
int a = 10,b = 11;
const int *p1 = &a;
cout<<*p1<<endl;
//*p1 = 20;
p1 = &b;
cout<<*p1<<endl;
/*指针常量,指针的指向不可修改,指向的内存空间可以修改
int * contst p2 */
int m=20,n=22;
int * const p2 = &m;
cout<<*p2<<endl;
//p2 = &n;
*p2 = 55;
cout<<*p2<<endl;
赋值兼并性原则
父类指针(引用)指向子类对象 (子类中含有父类没有的东西)
子类对象初始化父类对象
构造和析构顺序
先调用父类的构造函数,在调用子类的构造函数
先析构子类的析构函数,在调用父类的析构函数
多态
多态定义:同样的调用语句,有多种不同的调用方式
多态的条件:
1、有继承
2、有虚函数重写 (在基类中的函数上加virtual关键字,子类可写也可不写)
3、父类指针(父类引用)指向子类对象
联编
静态联编:在编译器编译阶段,已经决定了函数的调用(不写virtual关键字,是静态联编)
动态联编:在运行阶段,根据具体的对象(具体的类型),执行不同对象的函数,表现为多态
面向对象的三大特性
1、封装突破C函数的概念,用类做函数参数时候,可以使用对象的属相和方法
2、继承代码的服用
3、多态可以提前搭好框架,让后来人直接重写自己的函数,框架自动调用后来写的函数 面向未来
虚函数、纯虚函数、虚析构函数
1、虚析构函数,在析构基类资源时,将派生类的资源也一起析构
2、虚函数 ,只有virtual ;既有定义,也有实现的代码(在.h实现需要virtual关键字,在.cpp中实现是不需要);包含虚函数的可以定义其对象
3、纯虚函数 ,必须有virtual和=0 ;只有定义,没有实现(在.h实现需要virtual关键字,在.cpp中实现是不需要);包含纯虚函数的不可以定义其对象