C++知识点

来源:互联网 发布:58淘宝模特兼职的骗局 编辑:程序博客网 时间:2024/04/30 15:44

  1.  引用必须被初始化,指针不必(某种程度上相当于*const ),类内引用或者const 变量必须在初始化列表初始化(不能在构造函数初始化)
  2. static局部变量(包括类)只被初始化一次,同名static对象只执行一次构造函数
  3. 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中
  4. 派生类对象赋给基类指针、引用才产生多态,在调用基类构造函数时没有多态,此时调用的都是基类的函数和数据;多态时,如果调用父类函数没有virtual关键字或者派生类没有override,仍是调用基类函数,使用基类数据。
  5. 基类没有虚析构,如果是用基类指针delete只会调用基类析构函数。
  6. 函数模板调用时不一定写类型实例化,但后面要确定类型,如add(5.2,3.0)和add<double>(5.2,3)都是正确的
  7. 类内static函数没有this指针,只能调用static成员,类内static成员只是声明,需要在类外写出静态定义(此时可以初始化,默认为0),类外定义静态变量不必加static,否则表示只能文件内可见(extern关键字无效)
  8. 类强制转换成数据类型的格式是operator double(){}(前面不写返回值类型,但要返回一个double型值)
  9. 加减乘除运算符重载的格式:friend T operator+(const T & t1, const T & t2){}(如果第一个参数被this指针替代,改为只传入一个参数的成员函数,不写friend)(返回值是实体做左值无意义,因为没有变量名表示这个返回值,所以不必谢const,其他情况应该写const)
  10. 输入输出运算符重载的格式:friend ostream& operator<<(ostream &out ,const T& t){},此时须写&(返回值能做左值),friend(如果操作类内私有变量的话),ostream的引用不能加const(流的位置信息会被改变)
  11. 赋值运算符(=,+=)重载的格式:T & operator=(const T & t) ,类内常常返回 *this(类的引用);类中有指针,常常要判断(this!=&t),才进行赋值(不能判断给自己赋值,delete之后会出错)
  12. const char * const  s= "abc",第一个const:不能通过s指针改变指向的内容(当然这里是常量肯定不能,改成变量也不能),第二个const:不能改变s指针的指向(即不能再赋值,此时和引用类似)
  13. 如果基类没有默认构造函数,派生类必须在初始化列表写上基类的构造
  14. 如果基类有指针或引用,派生类在初始化列表常常需要写上基类构造函数传入参数,否则调用基类默认构造函数,可能会没给指针、引用初始化;如果派生类有动态内存分配,基类常常需要写虚析构,另一句是基类有虚函数时常常要写虚析构,这意味着我们会用基类指针操作派生类对象,而基类指针在析构的时候如果没有虚析构不会调用派生类析构函数(注:抽象类必写虚析构)
  15. 派生类指针指向派生类对象,delete时先调用派生类析构再调用基类析构,如果是基类指针则要看是否有虚析构
  16. const对象只能调用后面有const的函数,否则编译报错!!
  17. 函数传入参数是一个类的实体会发生拷贝构造,而引用不会,所以多用引用或指针
  18. 函数返回值如果在函数结束时被回收,则不能返回该值的引用或指针,如果返回的是类的实体则会发生拷贝构造
  19. 继承类实体可以赋给基类引用、指针,反之不行,编译错误
  20. 缺省赋值必须写在声明上,而定义上不写
  21. inline关键字必须写在实现上,声明上不写
  22. 派生类对象赋值基类对象只赋值派生类从基类继承到的数据,此时基类对象仍调用基类函数和数据(显然,用指针则体现多态)
  23. 类中有指针,出现拷贝构造常常要自己写拷贝构造函数,
  24. 如下例程,基类指针取出基类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
原创粉丝点击