• 涨知识 --- VI


    1.空类所占空间大小

      空类所占空间为1,单一继承的空类空间也为1,多继承的空类空间还是1.但是虚继承涉及虚表(虚指针),所以sizeof(C)的大小为4。

    2.内联函数与宏定义

      Ans:内联函数和普通函数相比可以加快程序运行速度,因为不需要中断调用,在编译的时候内联函数可以直接镶嵌到目标代码中。而宏只是一个简单的替换。

    所谓的嵌入代码,是指在调用函数的地方把所需要的函数代码直接写到那里去。对于短小的代码来说,inline可以带来一定的效率提升,而且和C时代的宏函数相比,inline更加安全可靠。可是是以增加空间为代价的。

    比如,在C中,可以定义无返回值类型的函数。

    #include <stdio.h>
    
    inline func(int i)
    {
        return i * i;
    }
    int main()
    {
        printf("%d
    ", func(8));
        return 0;
    }

     3.交换问题:

    //交换无效:没有修改指针中的内容。
    void swap3(int *p, int *q){
        int *tmp;
        tmp = p;
        p = q;
        q = tmp;
    }
    //交换成功!a & b所在地址处的内容发生交换
    void swap4(int *p, int *q){
        int tmp;
        tmp = *p;
        *p = *q;
        *q = tmp;
    }
    //交换成功!同上
    void swap5(int &p, int &q){
        int tmp;
        tmp = p;
        p = q;
        q = tmp;
    }
    int main()
    {
        int iv;
        int iv2 = 1024;
        int iv3 = 999;
        //int &reiv;
        int &reiv2 = iv;
        int &reiv3 = iv;
        int *pi;
        //*pi = 5;整数指针pi没有指向实际的地址。在这种情况下就给他赋值是错误的,因为赋的值知不知道该放到哪里。
        pi = &iv3;
        //const double di; 错误!常量赋值必须进行初始化
        const double maxWage = 10.0;
        const double minWage = 0.5;
        const double *pc = &maxWage;
        int a=1,b = 2;
        swap3(&a,&b);
        cout<<a<<" , "<<b<<endl;
        swap4(&a,&b);
        cout<<a<<" , "<<b<<endl;
        swap5(a,b);
        cout<<a<<" , "<<b<<endl;
        return 0;
    }
  • 相关阅读:
    perl Exporter一些神奇写法
    perl eval函数
    hibernate 映射文件配置默认值方法
    JavaWeb 服务启动时,在后台启动加载一个线程。
    根据input 标签取value属性的值
    perl 继承小例子
    net.sf.json.JSONException: Found starting '{' but missing '}' at the end. at character 0 of null
    Uncaught TypeError: Cannot read property 'plugin' of undefined
    mysql 密码过期问题 password_expired

  • 原文地址:https://www.cnblogs.com/luntai/p/5778587.html
Copyright © 2020-2023  润新知