C++知识点
来源:互联网 发布:58淘宝模特兼职的骗局 编辑:程序博客网 时间:2024/04/30 15:44
- 引用必须被初始化,指针不必(某种程度上相当于*const ),类内引用或者const 变量必须在初始化列表初始化(不能在构造函数初始化)
- static局部变量(包括类)只被初始化一次,同名static对象只执行一次构造函数
- 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中
- 派生类对象赋给基类指针、引用才产生多态,在调用基类构造函数时没有多态,此时调用的都是基类的函数和数据;多态时,如果调用父类函数没有virtual关键字或者派生类没有override,仍是调用基类函数,使用基类数据。
- 基类没有虚析构,如果是用基类指针delete只会调用基类析构函数。
- 函数模板调用时不一定写类型实例化,但后面要确定类型,如add(5.2,3.0)和add<double>(5.2,3)都是正确的
- 类内static函数没有this指针,只能调用static成员,类内static成员只是声明,需要在类外写出静态定义(此时可以初始化,默认为0),类外定义静态变量不必加static,否则表示只能文件内可见(extern关键字无效)
- 类强制转换成数据类型的格式是operator double(){}(前面不写返回值类型,但要返回一个double型值)
- 加减乘除运算符重载的格式:friend T operator+(const T & t1, const T & t2){}(如果第一个参数被this指针替代,改为只传入一个参数的成员函数,不写friend)(返回值是实体做左值无意义,因为没有变量名表示这个返回值,所以不必谢const,其他情况应该写const)
- 输入输出运算符重载的格式:friend ostream& operator<<(ostream &out ,const T& t){},此时须写&(返回值能做左值),friend(如果操作类内私有变量的话),ostream的引用不能加const(流的位置信息会被改变)
- 赋值运算符(=,+=)重载的格式:T & operator=(const T & t) ,类内常常返回 *this(类的引用);类中有指针,常常要判断(this!=&t),才进行赋值(不能判断给自己赋值,delete之后会出错)
- const char * const s= "abc",第一个const:不能通过s指针改变指向的内容(当然这里是常量肯定不能,改成变量也不能),第二个const:不能改变s指针的指向(即不能再赋值,此时和引用类似)
- 如果基类没有默认构造函数,派生类必须在初始化列表写上基类的构造
- 如果基类有指针或引用,派生类在初始化列表常常需要写上基类构造函数传入参数,否则调用基类默认构造函数,可能会没给指针、引用初始化;如果派生类有动态内存分配,基类常常需要写虚析构,另一句是基类有虚函数时常常要写虚析构,这意味着我们会用基类指针操作派生类对象,而基类指针在析构的时候如果没有虚析构不会调用派生类析构函数(注:抽象类必写虚析构)
- 派生类指针指向派生类对象,delete时先调用派生类析构再调用基类析构,如果是基类指针则要看是否有虚析构
- const对象只能调用后面有const的函数,否则编译报错!!
- 函数传入参数是一个类的实体会发生拷贝构造,而引用不会,所以多用引用或指针
- 函数返回值如果在函数结束时被回收,则不能返回该值的引用或指针,如果返回的是类的实体则会发生拷贝构造
- 继承类实体可以赋给基类引用、指针,反之不行,编译错误
- 缺省赋值必须写在声明上,而定义上不写
- inline关键字必须写在实现上,声明上不写
- 派生类对象赋值基类对象只赋值派生类从基类继承到的数据,此时基类对象仍调用基类函数和数据(显然,用指针则体现多态)
- 类中有指针,出现拷贝构造常常要自己写拷贝构造函数,
- 如下例程,基类指针取出基类vtable赋给指向派生类的指针所指向的内容时,没有多态现象。
#include<iostream>using namespace std;class A{public:virtual void print(){cout<<"A"<<endl;}};class B:public A{public:virtual void print(){cout<<"B"<<endl;}};int main(){A *p = new B;A *q = new A;*(int *)p = *(int *)q;p->print();}
0 0
- c知识点
- C 知识点
- C/C++code知识点
- C/C++【知识点笔记】
- C基础知识点小记
- c#知识点 net
- C/C++知识点1
- c语言知识点
- C/C++面试知识点
- C语言知识点
- object-c 知识点
- [C++]指针知识点小结
- Objective-C知识点汇总
- Objective-C语言知识点
- C知识点累积篇
- C语言常见知识点
- c语言知识点补遗
- c语言知识点补遗
- 2+1/2
- android 打开各种文件(setDataAndType)
- CSDN插入GIF图片
- UI基础第二弹:Button基础
- UI基础第三弹:手写控件frame,center和bounds属性
- C++知识点
- js_Range
- Git客户端搭建环境(Windows系统)的使用 .
- UI基础第四弹:简单的图片查看程序
- "><img src=1 onerror=alert(document.cookie)>
- UI基础第五弹:懒加载
- 学习内核Kconfig和Makefile原理 .
- UI基础第六弹:九宫格坐标计算
- Linux kernel的Makefile和Kconfig以及Make menuconfig的关系 .