zoukankan      html  css  js  c++  java
  • c++杂项备忘

    <摘自C++Primer>

    const

    修饰变量,则该变量初始化的时候被赋值,在程序运行过程中不能被修改

    非const变量默认为extern,要使const变量能够在其他的文件中访问,必须显式地指定它为extern.

    const 引用是指向const对象的引用,并且只能引用该对象的值,而不能改变它的值

    <摘自孙鑫VC++深入详解>

    const char * 和char * const

    很多和文件操作相关的函数其参数类型都是const char*(指向常量的指针)与指针常量(char * const)这两种类型。

    const 在*前:表示指向常量的指针,该指针不能修改其指向的内存中的内容,但可以修改其所指向的内存地址

    如 char ch[5]="lisi";

    const char * pStr=ch

    *pStr='w' //error

    pStr="wangwu"//ok

    char * const : const在*的后面表指针常量,对于指针常量必须在其定义的同事赋值。指针常量表示指针本身是常量。

    char *const pStr=ch;

    pStr="zhangsan"//error

    *pStR='W'//OK

    <摘自徐惠民C++>

    常成员函数

    语法格式:

    返回值类型说明符 函数名(参数表)const

    特点:const是函数类型的一个组成部分,在函数定义,声明,实现时也要带const关键字。

       常成员函数不能更新对象的数据成员,也不能调用该类中的非常成员函数

       常对象只能调用常成员函数,但是常成员函数也可以被普通对象调用

       const 关键字可以被用于参与对重载函数的区分

      

     《摘自C++Reference》

    include<iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
    int main()
    {
     int end;
     int myints[]={10,20,30,40};
     int *p;
     p=find(myints,myints+4,30);
     p++;
     cout<<"The element following 30 is"<<*p<<endl;
     vector<int> myvector(myints,myints+4);
     vector<int>::iterator it;
     it=find(myvector.begin(),myvector.end(),30);
     it++;
     cout<<"The element following 30 is"<<*it<<endl;

     cin>>end;
     return 0;
    }

    此段代码表明iterator和指针的关系,数组与对应类别vector的关系

    构造函数初始化式:只能在构造函数定义而非声明中指定,没有默认构造函数的类类型成员,以及const或引用类型的成员,不管是那种类型,都必须在构造函数初始化列表中进行初始化。成员在构造函数初始化列表中被初始化的次序是定义 成员的次序。

    vector通过下标不能对其赋值,只能通过push_back(),但是map以及二维vector即包含vector的vector可以通过下标来赋值。

    如下代码是合法的

    vector<vector<int>> myintegers;
       myintegers.resize(3);
       for(int i=0;i<3;i++)
       {
        myintegers[i].resize(4);
       }
       for(int i=0;i<3;i++)
       {
        for(int j=0;j<4;j++)
        {
         myintegers[i][j]=numeric_limits<int>::min();
        }

       }
       for(int i=0;i<3;i++)
       {
        for(int j=0;j<4;j++)
        {
        cout<< myintegers[i][j];
        }
        cout<<endl;

       }

  • 相关阅读:
    分布式系统中的限流与熔断
    迷你MVVM框架 avalonjs 0.99发布
    将一个符合URL格式的字符串变成链接
    用CSS开启硬件加速来提高网站性能(转)
    通过window.crypto.getRandomValues获得一个大于零的随机数
    jquery slideDown效果
    五个你必须知道的javascript和web debug技术
    迷你MVVM框架 avalonjs 0.98发布
    使用avalon实现SKU组合查询功能
    angular与avalon对复杂对象的修改
  • 原文地址:https://www.cnblogs.com/finallyliuyu/p/1801546.html
Copyright © 2011-2022 走看看