• 第二章 开始学习c++


    重新系统的过一遍c++,感觉还是把基础打牢些。简单写一下以前没有注意过的或者稍重要的点。忘大佬们轻弹。

    1.  main()函数是被启动代码调用,是程序和操作系统之间的桥梁,同样的main()函数的返回值也就是返回给操作系统,通常的约定是退出值为0的时候意味着程序的运行成功,非0则为未成功。同时main不是关键字,它不是言语的组成部分,但是它是一个必不可少的函数名称,它可以作为一个变量名,但是不推荐。(可以看下样例)

    #include <iostream>
    int main()
    {
        int main=6;
        std::cout<<main;
        return 0;
    }
    

      

    2.  c++和c一样,使用一个预处理器,该程序在主编译之前对源文件进行处理。比方说使用#include <iostream>的编译指令,那么该编译指令会导致预处理器将iostream文件的内容添加到程序中,这是一种典型的预处理的操作。那么可能会说为什么把iostream的文件内容添加到程序中,因为c++的输入输出方案涉及到iostream的多个定义,如果你的程序需要用到输入输出与外界交互,就需要该定义。

    3.  关于命名空间的话,书上说如果使用iostream而不是iostream.h,则应该在下面使用命令空间编译指令来时iostream的定义对程序可用。也就是加上using namespace std; 但是你现在在程序上用iostream.h的话,你会发现会提示这个错误。我们先不看这个内容,继续看下去就是类,函数,变量都是c++编译器的标准配件,它们都放置在mingchengkongjianstd内,仅当头文件没有扩展名h的时候情况才是如此。还是和上面的结果一样,然后百度一下,解释应该是这样的。

    首先#include进去的就是别人帮你写好的库,你可以直接调用头文件里面封装好的函数或类,比如你用的cin cout等就是c++标准库里面的函数,这样你就不用自己写一个函数cin 来实现输入功能,也不用写函数cout来实现输出功能,直接调用就可以了。

    然后早期的c++库内容有限,可随着时间的推移,库的功能越来越强大,每个厂商之间可能将库里面的函数或类取了相同的名字,比如说A公司的库就可能定义了一个叫做sum的函数,而B公司也定义一个叫做sum的函数,于是就出现问题了,程序员开发时,如果同时使用了A的库,又使用了B公司的库,那么就可能出现混乱,你调用的sum到底是哪家公司的。最初,人们就想了个办法,厂商将名字取得更长更复杂来避免重复,可这样做却给编写和阅读带来了困难。后来,人们创造了命名空间这个概念(1998年),它能有效地指出某个标示符到底属于哪个库。这样做带来了一个新的问题,c++发展了那么多年(直到1998年推出命名空间,大约发展了16年),现存的代码已经有一定的量了,你突然给我搞了一个命名空间,以前可没这东西,我以前写的代码就不能再新的编译器下运行了,这可不行。

    于是人们想出了一个办法。为包装了std的那部分标准库构件创建出新头文件名。并且把新的头文件名字取和旧头文件相同,但不加后缀.h。所以<iostream.h>变成了新版头文件<iostream>,<complex.h>变成了<complex>,而新旧头文件的功能基本上相同的(但不完全相同),所以使用<iostream>时,想要调用里面的函数,就得使用类似std::cin的方法来说明cin是使用标准库里面的函数

    当使用<iostream.h>时,使用的是全局命名空间,也就是早期的c++实现(c++标准已经明确表示不支持这种用法了,所以理论上来说这种用法是非法的,但编译器厂商有可能还支持这种用法)

    当使用<iostream>时,该头文件没有定义全局命名空间,必须使用命名空间 std来说明你所使用的函数或类是来自iostream的。

    所以以前是有iostream.h,但是现在不支持了,但可能有的编译器支持。所以现在要用cin,cout等std的函数,都需要加上名称空间的申明了。

    新版C++对待旧版C++和旧版C语言的方式差别在于,明确提出不再支持C++头文件.h的使用,但任然支持C语言头文件.h的使用。这也是为什么现在的C++代码有的使用了.h,也可能不加.h。

    4.  用流的思想理解cin和cout,cout输出的时候可以看成它把输出的内容插入到了输出流当中,cin同理从输入的信息流入定义的变量中。

    5.  函数名和对象名也都不是关键字,在程序中将同一个名称(比方说cin)用作对象名和变量名会把编译器搞糊涂,也就是说在不使用cin对象进行输入的时候可以把cin作为变量,但是不能在同一个函数里把 cin同时作为对象名和变量名。

    6.  c++程序的模块叫函数!!!

    7.  编译器指出cout是一个未知标识符的时候导致出现的原因可能是:没有包含iostream头文件;未使用名称空间std。

       解决的方案当时就是加上对应的头文件,using namespace std;或者std::cout

     8.  using namespace std的作用当然就就是使用名称空间std,使得接下来的程序都能使用放在std内封装好函数。

  • 相关阅读:
    Ubuntu在命令行开启远程桌面
    Qt5编译项目出现GL/gl.h:No such file or directory错误
    硬盘录像机协议与技术汇总
    js判断IP字符串是否正确
    PHP获取原生POST数据
    hdu 5093 二分匹配
    hdu 4435 bfs+贪心
    hdu 4431 绝对值之和最小公式
    hdu 5073 推公式相邻质心转换
    hdu 3657 最小割(牛逼!!!!)总算理解了
  • 原文地址:https://www.cnblogs.com/jkzr/p/9802917.html
Copyright © 2020-2023  润新知