C++的一些小的知识点

时间:2021-04-04 11:44:59

1.初始化:

  对于内置类型

int *pia = new int[];    // 10个未初始化int
int *pia2 = new int[](); // 10个值初始化为0的int

  对于自定义类型:

    只要一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()

2.指针类型的大小:

  指针是存放地址的,如果是32位机器就是4字节的,如果是64位机器就是8字节的,根据机器字而决定的

  example函数参数是一个指针类型指向了传来的字符串数组

  注意,如函数传参数过来,只会是当做指针。大小也就只有地址长度 (4byte)。这里要特别注意一下~!!其他情况下都会开辟数组长度多个bytes。

void example(char acWelcome[]){
printf("%d\n",sizeof(acWelcome));//
return;
}
void Func(char str_arg[])//这里的参数确实当做了字符串指针来处理的,可能是编译的优化
{
printf("%d\n",sizeof(str_arg));//
}
int main()
{
char acWelcome[]="Welcome to Huawei Test";
cout<<sizeof(acWelcome)<<endl; //
example(acWelcome);
Func(acWelcome);
return ;
}
#include <iostream>
#include <cstdio>
using namespace std;
char s[]=""; int main()
{
char s1[]="";
char s2[]="";
char *pc = s;
int *pi = (int *)s;
long long *pll = (long long *)s;
cout<<sizeof(s)<<endl;//
cout<<sizeof(s1)<<endl;//
cout<<sizeof(s2)<<endl;//
cout<<sizeof(pc)<<endl;//4 指针是存放地址的,如果是32位机器就是4字节的,如果是64位机器就是8字节的,根据机器字而决定的
cout<<sizeof(pi)<<endl;//
cout<<sizeof(pll)<<endl;//4
return ;
}

3.重载与重写:

  1)重载(overload)

      一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。

  2)重写(override)

      override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法