zoukankan      html  css  js  c++  java
  • 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
    ",sizeof(acWelcome));//4
        return;
    }
    void Func(char str_arg[100])//这里的参数确实当做了字符串指针来处理的,可能是编译的优化
    {
        printf("%d
    ",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是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法

  • 相关阅读:
    常用Git代码托管服务分享
    .NET中操作IPicture、IPictureDisp
    Git学习笔记与IntelliJ IDEA整合
    螺旋队列问题
    杂题3道
    .NET 配置文件简单使用
    C++之Effective STL
    不容易理解的 lock 和 merge
    状态模式
    观察者模式
  • 原文地址:https://www.cnblogs.com/luntai/p/6257044.html
Copyright © 2011-2022 走看看