C++基本知识点(一)

第一篇

1. 指针初始化

int * p1 = new int(10)
int * p2 = new int[10]
int * p3 = new int[10]()

P1是初始化一个整型变量,初始化值为10。
p2,p3是一个指向数组的指针。
对于内置类型而言,new仅仅是分配内存,除非后面显示加(),相当于调用它的构造函数。
对于自定义类型而言,只要一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()。

2. enum枚举

enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。

enum bool {false,true};  //bool类型就是C++预定义的枚举

枚举在C语言标准里面定义的就是整型,不管哪个编译器都遵循这个标准。
在系统内部,C语言会把枚举变量和常量作为整数来处理,默认情况下,编译器会把整数0、1、2、3……赋给特定枚举中的常量。

enum {Sun, Mon = 5, Tue, Wed, Thu, Fri, Sat} d1, d2, d3, d4;
	d1 = Sun;    //初始化
	d2 = Mon;    //初始化
	d3 = Tue;    //初始化
	d4 = Wed;    //初始化
	cout << d1<<endl;
	cout << d2 << endl;
	cout << d3 << endl;
	cout << d4 << endl;

程序输出为:0, 5, 6, 7

d1,d2,d3,d4在函数内部定义时,一定要进行初始化,不然会是一个随机值。
d1,d2,d3,d4在函数外部定义时,自动进行初始化,值0。

3. 指针和数组的sizeof

32位机器上:

void example(char acWelcome[]){
    printf("%d",sizeof(acWelcome));
    return;
}
void main(){
    char acWelcome[]="Welcome to Huawei Test";
    example(acWelcome);
    printf("\n%d\n", sizeof(acWelcome));
    return;
}

程序输出:
4
23

数组作为函数的参数是会退化为函数指针(数组作为函数参数的时候经常是需要传递数组的大小)
sizeof(数组): 数组占用空间的字节数(会计算进结束符号:\0,占据一个字节)
sizeof(指针) :机器地址的位数

4. 虚函数与函数重载

虚函数是类的成员函数,而函数重载可以是类的成员函数也可以是非成员函数:

int fun(int a);
int fun(int a, int b);

函数重载不需要是成员函数,在类外声明或定义的函数同样可以对其进行重载.但是虚函数必须是某个类的成员函数。

重载的调用主要根据参数个数,参数类型,参数顺序来确定, 函数重载是忽略返回值的
虚函数和函数重载都实现了C++的多态性,但表现形式不一样,函数重载调用根据参数个数、参数类型等进行区分,而虚函数则是根据动态联编来确定调用什么.
多态性分为编译时多态性和运行时多态性:
(1) 编译时多态性通过静态编联完成,例如函数重载,运算符重载;
(2) 运行时多态性则是动态编联完成,主要通过虚函数来实现;

备注:
虚函数可以在子类中进行重载,也可以不重载而沿用父类中的方法。但纯虚函数必须重载,因为在其声明类中没有函数实现。包含纯虚函数的类为抽象类,抽象类不能声明对象,只能作为基类。

5 强制类型转换

char str[] = "glad to test something";
char *p = str;
p++;
int *p1 = reinterpret_cast<int *>(p);
p1++;
p = reinterpret_cast<char *>(p1); 
printf("result is %s\n", p);

reinterpret_cast用来将类型A按照类型B来解释。这样,就可以按照B类型来处理对象,当需要再按照A类型处理时,则需要再次使用该关键字将对象按照A类型解释。这样使用不安全,但是有时候非用不可。
(1) reinterpret_cast是强制转换但编译器不检查
(2) static_cast 是强制转换编译器在编译时检查(推荐的)
(3) dynamic_cast 是强制转换编译器在运行时检查
功能一样(至少在强制转换上是一样),但是安全性不一样

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章