C++易混部分

数组

  • 数组作为函数参数传递时,括号内不需要带具体个数
 void function( int a[], unsigned int n)...void function( int *p, unsigned int n)...int a[10];
 function(a, 10);
  • sizeof的值
int a[10];
sizeof(a) = 40sizeof(a[0]) = 4
  • 数组名是常数,不能赋值,如a++,但指针可以
  • 不能对数组进行整体赋值,但初始化可以
char s[9] = "CPP-Prog"; // 正确
char s[9]; s = "CPP=Prog" // 错误
  • 多维数组作为函数参数,不能每维都不传递元素个数
void function(int a[][], unsigned int n, unsigned int m) //错误写法
void function(int a[][3], unsigned int m) //正确写法

指针常量和常量指针

  • 常量指针:指向常量的指针,不能通过指针修改指向对象的值,但可以改变指针值
int n = 10; const int * p = &n 
  • 指针常量:指针指向的位置不可变化,但可以修改指针指向对象的值,必须在定义时初始化
int n = 10; int * const p = &n
  • 常量指针常量:指针值不可改变,指向对象的值也不可改变
int n = 10; const int * const p = &n

指针与函数返回值

  • 指针类型可以作为函数返回值,返回某个数据对象的地址
  • 不能返回局部变量的地址,只能放回全局变量地址

指针运算

  • 指针与整数加减:以指向的目标数据对象类型为单位,而不是以字节为单位

回调函数

  • 回调函数通过函数指针类型实现,使用函数指针作为参数传递。
  • 函数指针所指向的函数定义可以在未来再实现

面向对象

  • 基类析构函数为什么要定义为虚函数?

当基类指针指向派生类的时候,若基类析构函数不声明为虚函数,在析构时,只会调用基类而不会调用派生类的析构函数,从而导致内存泄露。

  • 构成多态的条件
  1. 必须通过基类的指针或者引用去调用函数。
  2. 基类中必须包含虚函数,且在派生类中必须完成了虚函数的重写。
发布了16 篇原创文章 · 获赞 1 · 访问量 487

猜你喜欢

转载自blog.csdn.net/u013566243/article/details/104920271