c++/qt命名空间分析

23 篇文章 3 订阅

c语言防止标识符同名冲突的方式:

  1. 函数写在不同.c文件内

c++用命名空间来进一步防止同名冲突的3种方式:

  1. 函数写在不同.c文件内
  2. 不同的类里
  3. 写在不同的命名空间namespace里

命名空间定义:

namespace Ui {
class MainWindow;  //命名空间内可以放变量,函数,结构体,类等等
}

外部使用MainWindow类两种方式:

  1. Ui::MainWindow方式。
  2. 在使用者源码文件开头,using namespace Ui;,这样就可以直接使用该命名空间 Ui 中的内容了,MainWindow m;比如使用c++自带标准库(这些库默认被开发者写在命名空间std内),则在编程开头就写一句,using namespace std;这样就可以直接使用库里的类了。


qt中,默认建立的窗口应用程序,主界面是MainWindow类,同时默认继承了两个类(c++支持多继承,java等语言不支持)。

Ui_MainWindow类负责界面的创建(比如拖拽了一个按钮,在这里面new反映出来,这个是qt自动生成的),这个类自动被写在了Ui命名空间里,手动修改了,下次还是自动被写进去。

namespace Ui {
    class MainWindow: public Ui_MainWindow {};  //这里是把MainWindow类写在了Ui命名空间里
} // namespace Ui

QMainWindow类负责界面的事件响应和处理(比如鼠标点击事件等)

namespace Ui {
class MainWindow;  //这里还是把MainWindow类写在了Ui命名空间里,因为不支持一个类属于两个命名空间,否则会报错
}
 
class MainWindow : public QMainWindow

{

......

}

 

提醒:一个类在继承的时候只能写在某个命名空间里,在另外一个地方继承时,还是只能写在当初那个命名空间里(即一个类不能同时出现在两个命名空间内),否则报错。

qt中继承的界面类会自动生成然后继承给MainWindow,且自动写在Ui命名空间里,因此多个应用程序想包含在一个工程里(大家都在Ui命名空间内),因为外部仅仅修改一下命名空间名字,但是下次又会自动生成为同名命名空间内,就会造成类名冲突的(默认主界面类名都是MainWindow,除非自己一个个修改,那就可以)。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值