Code Bye

有关C++的一些怎么样理解程序的问题

1.源代码文件变成可执行程序的过程当中进行的编译不止1次?
2.
第一个程序指的是iostream文件里的代码?这么说编译带有iostream文件的源文件实际上是编译了两个程序?#include的作用就是让头文件和源代码文件合并吗?
3.
类、函数和变量不是放在Microflop和Piscine中吗?怎么会变成放置在名称空间std中的?
4.
用using namespace std不是更方便吗?为什么这里说的好像用using std::cout这些代码更好?
解决方案

2

头文件不参与编译,源文件参与编译,头文件可包含到源文件中一起编译
名称空间的意义就在于防止名字冲突,只会using namespace std 那就完全失去了其意义

2

using namespace std  会暴露std 名空间的全部名字
这个名字有点多
用户一不小心,就定义了跟他们某个名字相同的名字
况且,标准还在修改,以后名字更多
所以感觉,不推荐using namespace std  应该是这个意思。

8

引用:
Quote: 引用:

头文件不参与编译,源文件参与编译,头文件可包含到源文件中一起编译
名称空间的意义就在于防止名字冲突,只会using namespace std 那就完全失去了其意义

那#include的作用就是让头文件和源代码文件合并吗?还有using namespace std不是只会让名称空间为std内的东西有效吗?例如,现在有两个名称空间,一个是std,一个是abc,两个都有cout,假如本人用了using namespace std后,使用cout时不是不会触发abc中的cout吗?

是包含   对  不会

1

一般是预编译,编译,再连接吧。

5

理解讨论之前请先学会怎么样观察
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建全部,然后在IDE中运行。(一般人本人不告诉他!
单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或在某行按F9设了断点后按F5执行停在该断点处的时候。

2

using namespace std;指令
会暴露std名空间的全部名字,
只要在这之前,包含了标准库中的头文件
那么,在这些头文件中出现的std名空间的全部名字,,都会被暴露出来。
没有包含头文件,自然不会暴露,原因是这些名字没定义

4

using namespace std;指定名空间的全部名字
using std::cout ;指定名空间某个具体的名字
这是 using 指令的两种不同用法
这就像你某个目录下,有一批照片,想发送到QQ空间
一个写法的含义是全部图片
一个写法的含义是具体某个图片
假设你来执行的话,第一条当然是全选发送
第二条,找到要发送的那个,发送过去
这是,C++语言这么规定的。
标准里,也是写了的,全部C++编译器,都会这么做。
using namespace std;//指定导入std名空间的全部名字
using std::cout ;//指定名导入std名空间的cout这个具体的名字
这两种格式形式如下:
1)using namespace XXX;//XXX 是个名空间
2)using XXX::YYY ;//XXX 是个名空间,YYY 是名空间内部的名字

2

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:

头文件不参与编译,源文件参与编译,头文件可包含到源文件中一起编译
名称空间的意义就在于防止名字冲突,只会using namespace std 那就完全失去了其意义

那#include的作用就是让头文件和源代码文件合并吗?还有using namespace std不是只会让名称空间为std内的东西有效吗?例如,现在有两个名称空间,一个是std,一个是abc,两个都有cout,假如本人用了using namespace std后,使用cout时不是不会触发abc中的cout吗?

是包含   对  不会

这样的话用using namespace std不是比using std::cout更好吗?没必要把std中的东西一个一个列出来啊?用了using namespace std后使用cout已经不会和其它名称空间的cout冲突了。

小程序这样用是会很方便,大程序这样可能是在作死


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有关C++的一些怎么样理解程序的问题