目录

前言

关于extern的认识

关于namspace的认识

关于namespace在Qt中的认识


前言

工作了一年半了(如果加实习就19个月了),对C/C++有了新的认识,关于extern和namespace也有了进一步认识,在此记录下!

关于extern的认识

先上一段代码,运行截图如下:

源码如下:

Head1.h

#ifndef HEAD1_H
#define HEAD1_H#include <iostream>
using namespace std;int value1 = 9999;void printHead1Value(){cout << "printHead1Value : " << value1 << endl;
}#endif

Head2.h

#ifndef HEAD2_H
#define HEAD2_H#include "Head1.h"extern int value1;void printHead2Value(){cout << "printHead2Value : " << value1 << endl;
}void changeValue(){value1 = -1;
}#endif

main.cpp

#include "Head2.h"int main(int *argc, int *argv[]){cout << "The value1 is :" << value1 << endl;printHead1Value();changeValue();printHead2Value();printHead1Value();getchar();return 0;
}

这里通过使用extern,就可以调用不同文件的变量,但是如果在main.cpp中创建一个同名的全局value1,就会报错,如下

报错如下:

这个方式,个人感觉的确有缺陷,不太好,所以就有了C++的namespace。

关于namspace的认识

运行截图如下:

源码如下:

Head1.h

#ifndef HEAD1_H
#define HEAD1_H#include <iostream>
using namespace std;namespace HelloWorld{int goloab = 1000;void printValue(){cout << "HelloWorld printValue : " << goloab << endl;}
}#endif

Head2.h

#ifndef HEAD2_H
#define HEAD2_H#include <iostream>
using namespace std;namespace IamFineThankYou{int goloab = 998;void printValue(){cout << "IamFineThankYou printValue : " << goloab << endl;}
}#endif

main.cpp

#include "Head1.h"
#include "Head2.h"int goloab = 8888;int main(int *argc, int *argv[]){cout << "The goloab is : " << goloab << endl;HelloWorld::printValue();IamFineThankYou::printValue();getchar();return 0;
}

通过namespace就可以很好的解决extern中存在的问题,并且还可以搞很多同名的函数。感觉这个namespace的确是很方便,下面是本人对namespace在Qt中的认识。

关于namespace在Qt中的认识

如下的程序结构:

这里只看2个.h文件

form.h

#ifndef FORM_H
#define FORM_H#include <QWidget>namespace Ui {
class Form;
}class Form : public QWidget
{Q_OBJECTpublic:explicit Form(QWidget *parent = nullptr);~Form();private slots:void on_pushButton_clicked();private:Ui::Form *ui;
};#endif // FORM_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::Widget *ui;
};#endif // WIDGET_H

这里可以看到2个.h文件,都有nameSpace Ui class Widget。另外一个是Form,这里要注意了

因为命名空间的不同,这两个是不同的类,点进去就可以看到!进入了ui_widget.h或ui_form.h,

下面来看看ui_form.h的部分代码!

发现Form中他继承了Ui_Form

就有了setupUi这个函数。从中可以看到。namespace这个把每一个界面都给它隔开了,通过这样的方式,也就实现了Qt中界面与逻辑业务的分离!

C++|Qt笔记-关于extern和namespace的区别与联系相关推荐

  1. 05黑马QT笔记之自定义槽函数

    05黑马QT笔记之自定义槽函数 1 自定义槽函数其实不难,没什么好说的,注意以下几点便可. 自定义参函数注意事项(Qt5): * 1)自定义槽函数可以是类成员函数(用得最多).全局普通函数.静态函数. ...

  2. 02黑马QT笔记之完全手写Hello World

    02黑马QT笔记之完全手写Hello World 1 步骤: 1 新建项目. 2 选择其他项目->空项目. 3 在空项目中添加QT +=widgets //代表使用窗口基类. 4 右击项目名字- ...

  3. Qt笔记(三十七)之解决QWebSocket收发中文乱码问题

    一.前言 之前介绍了基于QWebSocket实现的的服务端和客户端: Qt笔记(三十五)之QWebSocket简单使用(1)-实现服务端 Qt笔记(三十六)之QWebSocket简单使用(2)-实现客 ...

  4. QT笔记第0篇__Qt基本介绍

    QT笔记第0篇__Qt基本介绍 一.引言 二.Qt简介 三.特点: 四.相关网址 五.参考资料 一.引言 由于算法的实现过程中常常需要制作一些demo来进行功能展示,最开始打算用mfc,于是看了一段几 ...

  5. Qt笔记(五十四)之Activate控件开发

    一.Activate控件简介(内容摘自自百度) ActiveX控件是Microsoft的ActiveX技术的一部分.ActiveX控件是可以在应用程序和网络中计算机上重复使用的程序对象.创建它的主要技 ...

  6. ASP.Net学习笔记003--网站和WebApplication的区别

    以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 技术交流qq1群:251572072 技术交流qq2群:170933152 也可以自己下载: ASP.Net学习 ...

  7. VC++学习笔记(BITMAP与CBitmap的区别)

    VC++学习笔记(BITMAP与CBitmap的区别) BITMAP是一个结构,保存了一些位图的信息: CBitmap是个类,用法:CBitmap bitmap;//创建对象 bitmap.LoadB ...

  8. OC语言篇—学习笔记1—C和OC的区别

    学习笔记1-C和OC的区别 1.文件的后缀名 OC:类的头文件 .h,类的实现文件 .m C:类的头文件 .h,类的实现文件.c 2.导入头文件方式 C语言使用include导入头文件,如果想多次引用 ...

  9. Qt、Qte、Qtopia三者的区别

    Qt.Qte.Qtopia三者的区别 Qt 泛指 Qt software的所有版本的图像界面库,包括 Qt/X11(Unix/Linux).Qt Windows.Qt Mac等,但这只是相对于二进制来 ...

最新文章

  1. Linux实现ffmpeg H.265视频编码
  2. 《Silverlight揭秘》暨《ASP.NET高级程序设计(第2版)》有奖读书笔记征集
  3. 使用NeMo快速完成NLP中的信息抽取任务,英伟达专家实战讲解,内附代码
  4. 怎么选?阿里P7 or 副处级干部?
  5. 【zookeeper+Dubbo】zookeeper和Dubbo安装
  6. 写在方法中的路由跳转
  7. php数组只保留键值,php合并数组并保留键值的实现方法
  8. oracle 清理跟踪文件trc,trm
  9. 视频版权检测算法​​
  10. SpringBoot 精通系列-使用Swagger2构建RESTful APIs
  11. 【Flink】Flink keyed State多年的误解 以及 Keyed state redistribute
  12. MYSQL数据库学习----查询
  13. 矩池云上如何修改cudnn版本
  14. mybatis都有哪些executor执行器_Mybatis的SqlSession创建过程详解
  15. 如何在一个元素上有多个CSS过渡?
  16. 寻找中项和第k小元素c语言,寻找一个序列中第k小的元素——分治法
  17. 电脑检测工具eve_EVEREST中文版下载
  18. 敏捷 2016:行业分析研讨会
  19. Springboot之苹果内购支付
  20. 《老梁四大名著情商课》笔记- 拒绝是战术,不是艺术

热门文章

  1. 《跟波利亚学解题》思维笔记
  2. 【转】vc6.0移植到VS2010遇到的问题,散分给大家,虽然分不多,各位帮忙
  3. 好老婆的作息时间(做女人真悲哀 ……)
  4. 企业数字化新战场:低代码究竟是“毒瘤”还是“良药”?
  5. 第一次CODING附parentElement.insertBefore使用详解
  6. NanShan开源即时通讯团队讨论程序员空闲期可以做的事
  7. 『转』数据库的委托之类型分类处理
  8. ·必须《飞鸽~飞鸽传书》
  9. 关于Debug和Release之本质区别的讨论(转载)
  10. daab 3.1使用笔记