zoukankan      html  css  js  c++  java
  • C++随笔(二)障眼法

    1.内联函数

      C++的内联函数相当于C中的宏函数,不需要入栈的过程,节省了时间和空间,内联函数将它内联到栈中,而且内联函数要求比较小的函数才可以内联,大的函数编译器也做不到内联,写了也没用

    2.隐藏的成员函数的缺省指针(this),每一个成员函数一定有一个this指针,指向当前调用函数的变量的地址,在调试窗口,可以用sizeof(..)的到他的字节数

    而在C语言中,并没有this指针,所以,在C中用全局函数代替C++里面的成员函数的时候,全局函数的形参要求用调用者的指针,这样子才可以起到很好的传参的作用,起到改变实参的作用,补充:关于结构体,如果声明的是结构体变量,则在调用结构体中的变量的时候,用.,如果声明是指针,则需要用->      

    3.封装,继承和多态

      C++中的封装主要理解的是成员函数的概念

      c++中的继承用:,比如struct ..:..{  .. }

      C++中的多态,主要是虚函数

    4,构造函数

      构造函数没有返回值(是没有,而不是void 或者Int)

      int j = 24; 和int j(24);是等价的,在C和C++中都支持结构体struct SSTUDENT = {12,"lisii",'f'};这样子初始化

      而且为了可以使用SSTUDENT(12,"lisii",'f');来定义,引入构造函数,代替了C语言的大括号,对类中的对象属性等进行赋初值

      在C++中,用this->....= ....,而不是this.....=....;不同于java

      在c++中,给数组赋值的时候,要用strcpy(..,..),来赋值

      对于单参数的构造函数还可以用等号来调用构造函数SStud tud = 3;

      int *p = new int(2);在堆内生成int

      执不执行构造函数,由有没有NEW这个来决定,比如

      在前面有一个结构体,定义“

        SStud s;

        SStud s1 = 32;//执行构造函数

        SStud s2(10000,"lala",'f');//执行构造函数

        SStud *p1 = new SStud;//执行构造函数

        SStud *p2 = new SStud(32);//执行构造函数

        SStud *p3 = new SStud(100,"lala",'f');//执行构造函数

        SStud *pl = &s1; //不执行构造函数

      

  • 相关阅读:
    你的程序够健壮么?我看未必。。。
    POJ 3415 Max Sum of Max-K-sub-sequence (线段树+dp思想)
    Android ARM汇编语言
    关于索引删除的策略IndexDeletionPolicy
    深度学习领域的一些大牛
    框架学习之道:PE框架简介
    PropertyPlaceholderConfigurer类的使用注意
    hdu 4622 Reincarnation (后缀自动机)
    总结showModalDialog在开发中的一些问题
    android端向服务器提交请求的几种方式
  • 原文地址:https://www.cnblogs.com/lingxianxia/p/4421392.html
Copyright © 2011-2022 走看看