namespace

来源:互联网 发布:php curl 编码 编辑:程序博客网 时间:2024/05/16 18:36

namespace 和 explicit

问题的提出

在Windows编程课上,有这么一段程序
namespace Ui {    class HelloDialog;} 
在之后定义的HelloDialog类中
 class HelloDialog : Public QMainWindow {     Q_OBJECT     public:            explicit HelloDialog(QWidget *parent = 0);            ~HelloDialog();     private:            Ui::HelloDialog *ui; }
1、可以发现,HelloDialog类中的成员 ui 是指向 Ui::HelloDialog 的指针,问题是,此处的 Ui::HelloDialog 是否是指向本类HelloDialog的指针?或者说namespace中的HelloDialog是不是之后定义的Dialog类呢?
2、HelloDialog类的构造函数前的修饰符explicit的作用是啥?去掉是否可以?

问题的解决

namespace

C++程序在开始有命名空间的声明:using namespace std;或者 std::cout,在后续的程序中,就可以使用cout以及cin等,如下:

这里写图片描述

这里写图片描述

由此可知,Ui 的作用和std是一致的,Ui中的HelloDialog并不是之后所定义的HelloDialog

explicit

直接上概念:在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。

隐式类型转换

参考下另外一篇博客

关于.dll 文件

在安装一些软件的时候,有时候会出现dll文件缺失而导致的安装失败的现象,那么来解释一下dll文件(上百度百科):DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。[1]

简单的理解一下,所谓dll文件就是一些常用的函数实现方法的封装,在大型项目中通过这些文件实现了代码的重用,缺失dll文件,程序中一些函数没有了实现方法,当然也就安装失败了……

1 0