C++的一些小的知识点
1.初始化:
对于内置类型
int *pia = new int[10]; // 10个未初始化int int *pia2 = new int[10](); // 10个值初始化为0的int
对于自定义类型:
只要一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()
2.指针类型的大小:
指针是存放地址的,如果是32位机器就是4字节的,如果是64位机器就是8字节的,根据机器字而决定的
example函数参数是一个指针类型指向了传来的字符串数组
注意,如函数传参数过来,只会是当做指针。大小也就只有地址长度 (4byte)。这里要特别注意一下~!!其他情况下都会开辟数组长度多个bytes。
void example(char acWelcome[]){ printf("%d\n",sizeof(acWelcome));//4 return; } void Func(char str_arg[100])//这里的参数确实当做了字符串指针来处理的,可能是编译的优化 { printf("%d\n",sizeof(str_arg));//4 } int main() { char acWelcome[]="Welcome to Huawei Test"; cout<<sizeof(acWelcome)<<endl; //23 example(acWelcome); Func(acWelcome); return 0; }
#include <iostream> #include <cstdio> using namespace std; char s[]="1"; int main() { char s1[]="12345"; char s2[180]="1234567"; char *pc = s; int *pi = (int *)s; long long *pll = (long long *)s; cout<<sizeof(s)<<endl;//2 cout<<sizeof(s1)<<endl;//6 cout<<sizeof(s2)<<endl;//180 cout<<sizeof(pc)<<endl;//4 指针是存放地址的,如果是32位机器就是4字节的,如果是64位机器就是8字节的,根据机器字而决定的 cout<<sizeof(pi)<<endl;//4 cout<<sizeof(pll)<<endl;//4 return 0; }
3.重载与重写:
1)重载(overload)
一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
2)重写(override)
override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法