Bootstrap

Qt知识点梳理 —— NameSpace命名空间

命名空间作用


命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突;

如解决问题:【异常】间接寻址级别不同

C++中,命名空间使用namespace来声明,并使用{ }来界定命名空间的作用域,例如:

namespace func{

int age=18;

}

标准命名空间


C++中标准命名空间std,std 是 standard 的缩写,意思是“标准命名空间”;C++标准库中的函数或者对象都是在命名空间std中定义的;

Qt中有自带namespace:新建一个带窗体的项目都可以看到;

namespace Ui { class MainWindow; }

使用命名空间


1、在程序头部引用命名空间,如:

using namespace std;

2、在引用变量或方法时加上命名空间,如:

SpaceA::ToolA::Func1();

Qt自定义命名空间


1、使用namespace 及{ }来界定命名空间的作用域;

2、编写变量方法;

3、引用时使用 using namespace xxx 引用此命名空间;

示例如下:

ToolA.h

#ifndef TOOLA_H

#define TOOLA_H

#include

namespace SpaceA {

class ToolA : public QObject

{

Q_OBJECT

public:

explicit ToolA(QObject *parent = nullptr);

static void Func1();

static void Func2();

static void Func3();

static void Func4();

};//class

}//namespace

#endif // TOOLA_H

ToolA.cpp

#include “toola.h”

#include

namespace SpaceA {

ToolA::ToolA(QObject *parent) : QObject(parent)

{

}//class

void ToolA::Func1()

{

qDebug() << “ToolA Func1”;

}

void ToolA::Func2()

{

qDebug() << “ToolA Func2”;

}

void ToolA::Func3()

{

qDebug() << “ToolA Func3”;

}

void ToolA::Func4()

{

qDebug() << “ToolA Func4”;

}

}//namespace

MainWindow.cpp中引用

#include “mainwindow.h”

#include “ui_mainwindow.h”

//using namespace SpaceA; //此处引用namespace后 无需在每次调用前加SpaceA

MainWindow::MainWindow(QWidget *parent)
QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

SpaceA::ToolA::Func1();//头部引用namespace后 无需在每次调用前加SpaceA

SpaceA::ToolA::Func2();

SpaceA::ToolA::Func3();

SpaceA::ToolA::Func4();

ToolB::Func1();

ToolB::Func2();

ToolB::Func3();

ToolB::Func4();

}

;