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是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法

posted on 2017-01-06 17:12  暴力的轮胎  阅读(236)  评论(0编辑  收藏  举报

导航