C++初学解惑(一)
问题前瞻:
面向对象编程有何特点和优点?
命名空间的必要性?
main()的必要性和唯一性?
链接是什么?
return 0 的作用?
0.面向对象编程有什么特点和优点呢?
答:有了封装和接口,代码显得整洁条理,易于开发和维护。
1.为什么需要命名空间?
答:此问题优先级不高,目前认为和C++的整体(变量、函数、宏)的命名逻辑有关系。可以另外整理一篇叫做C++的命名逻辑。此时此处命名空间的引入姑且认为是为了避免混淆(编写大型程序或者将多个厂商的代码组合起来)。(1班和2班都有一个叫张三的怎么办)
2.为什么每个独立的C/C++程序都必须要有一个main()?
答:官方给出的解释是:main()是程序开始执行的标志。(猜测这可能是C++编译器决定的吧)
https://blog.csdn.net/lzm18064126848/article/details/51039607
参考解释:编译式语言三个阶段:编译、链接、运行。链接指的就是将 多个编译单元编译后的目标文件 链接成可执行文件。链接有先后,有主次。所以这多个编译单元应该有所区别,应该有且只有一个首领统领全局才好。也就是说,main()提供了执行的开端以及其他文件该在什么时候被执行.
2.0 链接的作用?
答:将例如 #include这样的预处理命令中包含的启动代码组合起来生成可执行文件。官方说法:链接就是将目标代码和其中使用的函数对应的目标代码以及一些标准的启动代码组合起来,生成程序的运行阶段版本。包含该最终产品的文件称为 可执行文件 。
2.1 return 0; 语句在main()中的作用?
答:官方:作为main()函数结束的标志。
那么返回的为什么是0。0又给了谁呢?答案P31
答:调用main() 的是操作系统,返回值通常称为退出值。通常的约定是退出值为0意味着程序运行成功,非0则存在问题。