温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

c++入门之基本概念

发布时间:2020-08-04 15:43:03 来源:网络 阅读:187 作者:be_better_ 栏目:编程语言
    c++由c语言衍生而来,最大的特点就是它是一门面向对象的语言,面向过程(c)即需要我们去按照步骤去一步一步写代码,而c++提供的面向对象机制帮助我们更有效更方便的开发。
     1.关键字:根据版本的不同关键字的个数有所不同,c中有我们熟悉的32个关键字,而在c++98这个版本中有63个关键字,很多都是和c中关键字类似,以后遇到会细说
     2.命名空间

概念:使用namespace关键字对标识符的名字本地化,以避免命名冲突或名字污染

命中空间的定义方式:namespace N1,命名空间是可以嵌套且可以有相同名称的命名空间出现,编译器在编译时会将其合并为一个命名空间,而在命名空间中定义的变量作用域只限于这个命名空间。

命名空间的三种使用方式:N1::a、using N1::b、using namespace N1;
3.缺省参数:缺省参数就是在定义或声明函数时为函数的参数指定一个默认值,若没有传递实参则用默认值。
分类:全缺省参数(每个参数都有默认值),半缺省参数

  • 注意:在半缺省参数定义时必须从右向左赋值,这种情况下传递的实参优先匹配最左边的缺省参数。
  • 缺省参数不能在函数定义和声明中同时定义,最好在声明。
    4.重载函数:在同一作用域中定义几个功能类似的函数,其参数列表(参数个数,参数类型,参数顺序)必须不同才能构成重载函数。
    在这里就要说一下为什么在c++中可以构成函数重载而在c语言中不行了,c中编译器对函数的命名是在函数名前加,c++根据编译器的不同有不同的命名规则,但相同点是都对函数的参数列表在命名时进行了修饰,当然,在c++工程中也可以根据自己的需求加入“extern”关键字让编译器当作c风格来编译,如:
    #### extern "C" int Add(int x,int y);这里编译器就按照C的风格进行编译了。
    5.引用(&):引用不是新定义了一个变量而是给以有的变量起了一个别名,与所引用的变量公用一块内存空间。
    引用作为函数参数和函数的返回值
  • 作为函数返回值时,离开函数作用域后,其栈上空间已经还给系统,因此不能用栈上的空间作为引用类型返回。如果以引用类型返回,返回值的生命周期必须不受函数的限制(即比函数生命周期长)。
  • 引用做参数效率比传值传参效率高,因为没有空间的开辟,但引用在底层上的实现与指针相同,即传址和引用的效率差不多,但引用比指针用起来更加安全。
  • 传引用时若不想修改实参则用const修饰的引用
  • const int &&a=10;不是多级引用,叫做右值引用。
    6.内联函数:以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。
    那么内联函数和宏函数在功能上时类似的,那为什么还要引入内联函数呢?在c中使用宏函数时需要对所有变量带上括号,不然表达式所求结果可能会会与预期有所不同,这样就增加了代码的风险性,其二宏是在预处理是进行替换,很不方便调试,没有类型检测的过程,而内联函数则在编译时进行替换,所以相对宏函数更加安全。
  • 在c++中用const定义的常量替换宏,用内联函数替换宏函数。
  • 内联函数是用空间换时间的做法,所以当代码很长或有递归时不建议使用内联函数,inline关键字对于编译器也只是一个建议,当不适合作为内联函数时编译器就会忽略内联。
  • inline不建议分开定义和声明,内联函数时具有文件作用域的。
    7.auto关键字(c++11)
    auto修饰的关键字编译器会自动推倒其类型。
  • auto在一行定义多个变量时类型必须相同。
  • auto不能作为函数的参数也不可以定义数组
    auto的第二个用法:基于范围的for循环
    int arr[]={1,2,3,4,5};
    for(auto & e : arr)
    e*=2;
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI