c++选择题笔记

  1. 局部变量能否和全局变量重名?
  2. 可以,局部变量会屏蔽全局变量。在使用全局变量时需要使用 ":: "。
  3. 拷贝构造函数:参数为同类型的对象的常量引用的构造函数
  4. 函数指针:int (*f)(int,int) = & max; 
  5. 虚函数:在基类中使用关键字 virtual 声明的函数。
  6. 虚函数依靠虚指针vptr和虚函数表vtable来处理。vptr是一个指针,在类的构造函数中创建生成,并且只能用this指针来访问它,因为它是类的一个成员,并且vptr指向保存虚函数地址的vtable。如果子类没有定义虚函数,那么他会继承父类的虚函数表(子类和父类共用同一张虚函数表)(共用存疑),子类的虚指针会指向父类的虚函数表。如果子类中只重载了一部分虚函数,没有重载的虚函数的地址也会保存在子类独有的虚函数表中,不过其地址与父类的虚函数表中对应函数的地址相同。
  7. 静态成员函数没有this指针。
  8. 静态成员不能是虚函数。虚函数在程序运行时,根据实际对象的类型来调用相应的函数。而静态成员函数是不依赖于任何对象的,它不需要通过对象来访问。 静态成员函数没有this指针,所以无法访问vptr. 这就是为何static函数不能为virtual。对于子类中没有重载的虚寒性
  9. 静态成员不可以访问非静态成员。在类为实例化时,没有具体的对象,也就没有相应的非静态成员存在,
  10. 静态成员访问非静态成员方法。通过参数传入所在的类的对象。
  11. const成员函数:函数名前面使用const 表示返回值为const,后面加 const表示函数不可以修改class的成员。后面加 const,传入的this指针为常量指针,不可以通过指针改变其内容。
  12. 静态成员函数后不用const修饰:静态成员不访问成员变量,后加const修饰无意义。
  13. 动态多态:(虚函数)对于相关的对象类型,确定它们之间的一个共同功能集,然后在基类中,把这些共同的功能声明为多个公共的虚函数接口。各个子类重写这些虚函数,以完成具体的功能。编译期要执行的具体程序无法确定,要等运行时才能确定。
  14. 静态多态:模板。编译期执行的程序便被确定。
  15. 数组作为参数传递给函数或将其赋值给指针时,数组会退化成指针,此时 对其使用sizeof 将返回指针的大小,而不是数组的大小。
  16. 字符串char[]的实际长度比其内容长度要+1,因为多一个'\0'。
  17. 类的声明,会调用默认构造函数。 类指针的声明,不会调用构造函数。
  18. FILE *fopen(const char *filename, const char *mode);mode:r+:如果文件不存在返回null。从文件头开始写,覆盖的文字最后不加eof,未覆盖的字符保留。w+:当文件不存在则创建文件。从文件头开始写,覆盖的文字最后加eof,原文件将会被清空。
  19. 方法覆盖:方法的覆盖对返回值的要求是:小于等于父类的返回值。方法的覆盖对访问要求是:大于等于父类的访问权限。

你可能感兴趣的:(C/C++,c++,笔记,开发语言)