现在的位置: 首页 > 综合 > 正文

c++杂项备忘

2011年07月16日 ⁄ 综合 ⁄ 共 1594字 ⁄ 字号 评论关闭

<摘自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;

   }

 

 

【上篇】
【下篇】

抱歉!评论已关闭.