C++基础(1)

        命名空间(namespace):通过命名空间来限制变量的作用域,通过这样的作用域的限制,避免了命名上的冲突,函数和变量通过 命名空间的不同,会在内存中存储的时候,形成不同的名字,这样,就避免了各种各样的命名冲突。

        输入和输出(cout <<    /    cin >>)C++的输入和输出,通过运算符来实现,但是因为有命名空间的限制,所以在使用的时候,必须进行一个std命名空间的引用,通过::这个运算符来进行引用。输出运算符cout<< ,输入预算符cin >>,通过这两个运算符进行输入和输出,因为运算符具有重载的特性,所以这两个运算符可以通用于各种数据类型。还有一个运算符是endl 这个运算符表示输出一个换行符。

        缺省参数:缺省参数就是在函数传递值的过程中,有时候因为函数的定义中已经有了给定的参数的数值,所以在函数传参的过程中,这些参数可以缺省。但缺省的参数只能由右向左进行值的填充,也就是说,只有依次从左边不空位置不对参数赋值,这样,才不会保证函数参数的二义性。当函数在执行的过程中,如果参数不够,就会使用函数在定义的时候所给定的值进行计算。

        函数的重载:函数的重载就是同名同命名空间下函数根据参数列表的不同,对一个函数名进行了不同的实现方式,这样,就是函数的重载。只能是参数列表不同,不能是函数的返回值不同,因为函数在调用的时候,只能进行一个参数的传递,不能进行返回值类型的检查,所以,不同的返回类型,但参数列表相同,不能算作函数的重载。

        名字修饰:在C/C++中,程序需要经历一下阶段:预处理、编译、汇编、链接。

而名字修饰就是在编译阶段对函数变量的名字重新进行一个命名的过程,在程序的执行过程中,就是使用已经重新命名好的名字进行程序的运行。在C语言中,只是给函数和变量的名字加一个下划线( _ ),就可以了,但是在C++中,因为有了函数重载以及名字空间的却别,所以有了更加复杂的命名空间。C++的名字修饰比较复杂,不同的编译器有着不同的实行方式。

        extern "C" 这个命令是告诉编译器,这个关键词后的大括号内的代码按照C语言的方式进行编译,因为在C++中,有着一些和C不同的编译方式,所以为了使C的代码可以再cpp文件下通过编译,采用此方式。

        引用(  int & A = B;)引用的其实就是一种指针的其他用法,可以看做,是一个常量指针,因为引用只能在定义的时候进行赋值,并且也只能在定义的时候进行赋值,然后就一直指向着他所引用的对象,不能被改变。引用在使用的过程中,一个对象可以有多个引用,但是不能多级引用。引用在使用的时候,使用方法和变量一致,不需要进行类似指针的解引用,这使得应用在使用时,非常的方便,同时引用相比于指针。for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二 部分则表示被迭代的范围。,具有很多好处:1.不能被改变 2.和指针类似,可以完成跨栈操作,效率高 3.因为是直接进行变量的操作,不用担心变量的地址越界 等很多优点,这使得引用的安全性得到了提高。  同时引用还可以使用常饮用,即使用const修饰的变量,也可以通过 一个const修饰的引用来定义一个常变量的引用。

        内联函数(  inline ) 内联函数和宏的作用一致,为了避免函数压栈是的开销,所以在inline修饰的函数被调用的时候,编译器会在调用函数的地方进行展开,不进行函数的压栈操做。但是使用inline修饰的函数,和register一样,仅仅是对编译器的建议,编译器可以根据函数的具体情况决定是否在函数的调用的位置进行展开,因为当函数很大,或者当函数是递归的时候,展开的开销太大,所以编译器不会进行展开。

        auto关键词(  auto  )auto关键词的作用是修饰变量,当不知道进行赋值的变量是什么类型是,可以使用auto修饰被赋值变量,这样,被复制的变量会自动转为赋值变量的类型。这一系列操作是有编译器在编译时期推导而得。auto关键词不能作为函数参数列表的形参类型,也不能直接声明数组。在使用auto关键词时,如果遇到逗号表达式,即在同一行定义变量的时候,auto所起的作用仅仅是转换为第一个变量的类型,后面所跟的逗号所连接的变量都是按照一开始转换好的类型进行类型替换。

        范围for的循环:在C++11中,新引入了一种新的有范围的集合的遍历方法,这方法就是。for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二 部分则表示被迭代的范围。通过这样的方法,实现了范围集合的遍历。这种方法使用的时候,必须确定范围是确定的。

        空指针值nullptr对也空指针,我们在C语言中,通过NULL或者是0 进行表示,但是在C++11中,又重新定义了一个nullptr的关键字,表示真正意义上的一各空指针。当定义一个空指针的时候,必须给着这个空指针赋值为nullptr,如果给这个指针变量赋值NULL,或者 0 ,仅仅只是赋给了一个 ‘0’,而不是(*)0,这两个是不一样的。所以,在赋值的时候,就不能象C语言一样,对对空指针赋值NULL了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值