当前位置: 首页 > news >正文

网站怎么做反向代理做推广便宜的网站

网站怎么做反向代理,做推广便宜的网站,电子商务网站的建设ppt,王烨飞变形计目录 先说RTTI 再说QMeta Object System 关于Q_OBJECT 这篇文章我打算研究一下QMetaObject System#xff0c;也就是Qt自己构建起来的元对象系统。 先说RTTI 啥是RTTI#xff1f;这是C编程里的一个常见术语#xff0c;全称是#xff1a;运行阶段类型识别#xff08;Ru…目录 先说RTTI 再说QMeta Object System 关于Q_OBJECT 这篇文章我打算研究一下QMetaObject System也就是Qt自己构建起来的元对象系统。 先说RTTI 啥是RTTI这是C编程里的一个常见术语全称是运行阶段类型识别Runtime Type Identification关于RTTI如何在原生C中使用不是我们这里的重点但是可以明确的一点是——跟编译器实现密切相关意味着可移植性略差。很多类库已经为其类对象提供了实现这种功能的方式但由于C内部并不支持因此各个厂商的机制通常互不兼容 即使编译器支持RTTI就目前而言原生的支持仍然十分的不足。我们没有办法完全知道例如类的名字、有哪些父类、有哪些成员变量、有哪些成员函数、哪些是public的、哪些是private的、哪些是protected的等等。 有时候一个工程项目可能包含成千上万个类完整的保存这些信息将会消耗大量的内存资源。为了节省内存C标准约定typeid只能返回类名。因此仅靠dynamic_cast和typeid两个关键字提供的类型信息实在有限。更何况他还会造成大量的系统开销这也是为什么这个特性并没有被完整的纳入标准。 关于RTTI可以参看【C】RTTI有什么用怎么用 - 知乎 (zhihu.com)以备快速的复习 再说QMeta Object System 下面我们聊聊既然大家都各做各的Qt框架作为C早期时代就存在的框架自然实现了自己的一套源系统机制。 这个元对象机制不光实现了类似于RTTI那样的动态查看类信息的作用还扩展出了信号与槽的机制这个就是大名鼎鼎的信号与槽 Qts meta-object system provides the signals and slots mechanism for inter-object communication, run-time type information, and the dynamic property system. 这个对象说一千道一万三个核心 The QObject class provides a base class for objects that can take advantage of the meta-object system. The Q_OBJECT macro inside the private section of the class declaration is used to enable meta-object features, such as dynamic properties, signals, and slots. The Meta-Object Compiler (moc) supplies each QObject subclass with the necessary code to implement meta-object features. 也就是说 QObject这个类提供了整个元对象系统的一个根基 Q_Object宏这是让一个类可以使用RTTI信号与槽机制这就是为什么一些奇奇怪怪的Undefined Reference可以依赖这个解决下一次发现使用信号与槽机制的时候编译炸了排查的时候考虑这个事情 Moc则是更加进一步的提供了元对象系统的实现的保证嘿想一下你编译的时候是不是需要有moc文件他就是Meta-object Compilers元系统编译器产生的 换而言之Qt的元对象并不完全直接依赖于语言而是借助了外来的Moc Tools预先扫描源文件生成自己的元对象文件在最后纳入编译阶段合并进来 当然我们的元对象系统还可以做更多的事情 QObject::metaObject作为一个静态方法返回关联的metaObject也就是返回当前对象的元对象系统的那部分 QMetaObject::className可以进一步返回运行时的对象名称而这个是基于标准实现而不是编译器实现的你知道的一致性 QObject::inherits则是检查一个类是不是位于Qt的继承树上 QObject::tr则是保证了我们的对象名称满足国际化 QObject::setProperty和QObject::property让我们的对象拥有了属性这个概念 QMetaObject::newInstance()以一种工厂方法构造了这个类的一个新实例 我们知道dynamic_cast可以用来转化父类子类而且转化成不成功全看是不是真的如此。这里我们入乡随俗使用qobject_cast来检查Qt元对象的继承问题。 我随手写一个简单的demo: #include QWidget #include QMainWindow #include QApplication class MyObject : public QWidget{}; ​ ​ int main(int argc, char *argv[]) {QApplication app(argc, argv); // Import For QWidgets enableQObject* obj new MyObject; ​QWidget* widget qobject_castQWidget*(obj);if(widget){qDebug() Is Widget;} ​QMainWindow* window qobject_castQMainWindow*(obj);if(window){qDebug() Is Window;} ​delete obj; } 值得注意的是如果我们希望纳入一个类进入QObject的继承对象树中务必在私有区域声明一个Q_OBJECT。当然要是想要直接暴露给外面的话放在public也不是不行 手撸了一个例子 #include QWidget #include QMainWindow #include QApplication #define IS_USE_QOBJ_MACRO 0 ​ class MyObject : public QWidget{ #if IS_USE_QOBJ_MACROQ_OBJECT #endif public:QString _ClassName(){return this-metaObject()-className();} }; ​ ​ int main(int argc, char *argv[]) {QApplication app(argc, argv);QObject* obj new MyObject; ​QWidget* widget qobject_castQWidget*(obj);if(widget){qDebug() Is Widget;} ​QMainWindow* window qobject_castQMainWindow*(obj);if(window){qDebug() Is Window;} ​qDebug() dynamic_castMyObject*(obj)-_ClassName(); ​delete obj; } ​ #if IS_USE_QOBJ_MACRO #include main.moc // 一个Demo我们直接自己引入编译好的main.moc #endif 你可以留意到添加了QOBJECT宏的类的行为表现的并不一致。 #define IS_USE_QOBJ_MACRO 0 Is Widget QWidget #define IS_USE_QOBJ_MACRO 1 Is Widget MyObject 由此如果想要让元对象系统正确的工作请务必使用Q_OBJECT 关于Q_OBJECT #define Q_OBJECT \ public: \QT_WARNING_PUSH \Q_OBJECT_NO_OVERRIDE_WARNING \static const QMetaObject staticMetaObject; \virtual const QMetaObject *metaObject() const; \virtual void *qt_metacast(const char *); \virtual int qt_metacall(QMetaObject::Call, int, void **); \QT_TR_FUNCTIONS \ private: \Q_OBJECT_NO_ATTRIBUTES_WARNING \Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \QT_WARNING_POP \struct QPrivateSignal { explicit QPrivateSignal() default; }; \QT_ANNOTATE_CLASS(qt_qobject, ) 这就是我们的源码。 可以看到他实际上就是向我们的类内嵌入了工作函数。这就是为什么需要添加一些类。 当然还有MOC编译器的使用以及还有属性系统挖个坑有空讲。
http://www.dnsts.com.cn/news/39226.html

相关文章:

  • 湖北营销型网站建设做网站到a5卖站赚钱
  • 如何在网站做直播间企业型网站中的文章更新是指什么
  • 网站建设与运营考试图书租借网站 开发
  • 在网站的主页制作时 填写关键字怎么做网站埋点
  • 企业网站怎做网站色调搭配
  • 做宝玉石交易的网站有哪些哪家企业建设网站好
  • 做网站论文网站建设计划书范文
  • 做跨境的网站有哪些内容中国纪检监察报社长
  • 沥林行业网站建设jsp做网站实例教程
  • 外贸网站seo有哪些公司晟合建设集团网站
  • 丰都网站建设公司wordpress自建图床
  • 小规模开普票网站建设几个点360建筑网的内容百度可以查到吗
  • 如何创建网站快捷方式到桌面做地方分类信息网站需要什么资质吗
  • 问答系统网站建设2015做导航网站有哪些功能
  • h5响应式网站模板下载七星互联免费主机
  • 做网站多少钱西宁君博领先怎么做网页背景
  • 专做尼泊尔的旅行网站开发公司企业管理制度
  • 无锡朝阳网站推广荔枝视频在线观看免费最新
  • 网站首页title简单描述网络营销的特点
  • photoshop 网站设计运营培训班有用吗
  • dede企业网站模板下载电脑打不开网页怎么回事
  • 即时设计是什么软件seo项目完整流程
  • 建设工程合同备案网站wordpress右侧空白
  • wordpress 顶部图像汉阳网站推广优化
  • html公益网站模板大型百度云网站建设
  • 网站移动端开发公司培训行业门户网站建设方案
  • 百度经验app下载seo移动端排名优化
  • 黄岛网站建设哪家专业title 芜湖网站制作
  • 济宁华园建设有限公司网站怎么做网站促收录
  • 广州市建设企业网站哪家好网络规划设计 网站建设