学习C++、QT---02(创建第一个C++项目、命名空间的讲解)
每日一言
失败是暂时的迷雾,坚持向前,总会等到拨云见日的那一刻。
学完这个软件的介绍,那么我们要知道QT项目,的核心语言是C++但是我不会啊,所以我要先学C++
那么怎么办呢Qt Creator可以创建C++项目吗?
当然可以了,也可以创建c的项目
这个Non-QT project就是可以选择纯C++或者纯C的项目
这边我创建了C++项目名为FirstCPPpro
这边我创建了C项目名为FirstCpro
会很清楚的发现没有了.ui的那个文件,因为这个就是纯C++和纯C项目和QT项目的区别
我们一个个来看c语言和C++的区别
总结对比
特性 | C 语言 | C++ |
命名冲突解决 | 无专门机制,依赖开发者避免重名 | 强制使用命名空间(如 std::) |
标准库规模 | 小,约 200 个函数 | 大,包含容器、算法、IO 等组件 |
头文件内容 | 仅声明(函数原型、类型) | 仅声明(少数内联函数除外) |
实现位置 | 静态库(.a)或动态库(.so) | 同上 |
多库协作 | 易冲突,需手动避免 | 通过命名空间隔离 |
一句话总结
C++ 的命名空间是为了解决大型项目和标准库的命名冲突,而头文件与实现分离是为了提高编译效率和代码复用性。两者共同让 C++ 能应对更复杂的软件开发需求。
也就是说我们c语言的printf函数只需要包含头文件stdio.h,但是C++的cout函数需要头文件iostream和命名空间std
这边引入一些这个QT 的快捷键
命名空间的意义
为什么呢?
因为上面也有总结,主要是因为C++怕命名冲突,比如我自己也定义了一个cout如果没有命名空间那么就会编译错误,因为编译器不懂我这个cout是标准库的还是哪里的,就是因为有重复的名字,就会冲突,然后C++又很容易冲突,所以需要命名空间的管理,只要有命名空间的管理那么多少个cout都是可以的
自己写一个C++程序带命名空间,巩固学习命名空间
我们写了一个算出圆的周长和面积的函数
我们需要新建一个.h文件作为命名空间的文件,里面需要写上函数的声明和函数的实现,但是写到后面有经验了就可以也将我们的函数实现的代码封装成一个库文件,和我们C++标准库c标准库的库文件一样
命名空间名为cir
所以我们也要向C语言一样调用这个头文件,然后我们也可以用c语言的写法来进行写,这个没有问题,也需要包含c语言的标准库头文件,这样才可以
可以看到我们有两种写法
一种是加了命名空间的,一种是没有加的,前提都是需要命名空间的头文件
第一种写法:
直接调用函数
需要额外 using 引入
代码中通过 using namespace cir; 或 using cir::getCircumference; 等方式,把 cir 命名空间的函数 “引入” 当前作用域,让编译器能找到。
如果没做这些,编译器会报错(提示函数未声明),因为它不知道这两个函数属于 cir 命名空间。
第二种写法是:
函数前方加上了cir::函数
cir:: 显式指定函数属于 cir 命名空间,不需要额外 using 引入。编译器会直接去 cir 命名空间找这两个函数的声明 / 定义,只要头文件里 cir 命名空间声明了这俩函数、链接阶段能找到实现,就能正常运行。
好了命名空间的介绍就到这了