构造函数

[C++_QT] Error: Not a signal or slot declaration

跟風遠走 提交于 2020-03-20 18:27:31
问题:   在Qt工程中添加了一个新的窗口之后 一直报错 如下      单单从错误描述上看 是缺少信号或者槽 但是我确定没有缺少啊      然后第二个错误显示了一个mox_xxxx文件 然后我就去那个目录下去找那个文件 但是发现没有 所以接下来就是找到为什么没有moc_xxx文件   moc文件的生成和 有关系 但是我检查之后确定这个没有缺失   我找了各种手动生成moc文件的方法 结果依旧提示:   再次确定是代码的问题 直到看到了这个文章:   https://blog.csdn.net/li_hai/article/details/5877081      看到了嘛 构造函数不应该出现在signal 或者 slot里面 还有不能出现构造函数 但是我检查之后并没有发现我犯这个错误    但是我也注意到了 在slots里面出现了不该出现的 不是槽函数的东西 在我把他们移走之后 就可以正常运行了.    所以 这个问题主要还是 那 该死的粗心啊 来源: https://www.cnblogs.com/cjdty/p/10698457.html

C#反射

大城市里の小女人 提交于 2020-03-20 18:26:34
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构。 应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。 程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。反射通常具有以下用途。 (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。 (2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。 (3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private

深入理解js构造函数

狂风中的少年 提交于 2020-03-20 12:40:01
JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式。对象字面量是一种灵活方便的书写方式,例如: var o1 = { p:”I’m in Object literal”, alertP:function(){ alert(this.p); } } 这样,就用对象字面量创建了一个对象o1,它具有一个成员变量p以及一个成员方法alertP。这种写法不需要定义构造函数,因此不在本文的讨论范围之内。这种写法的缺点是,每创建一个新的对象都需要写出完整的定义语句,不便于创建大量相同类型的对象,不利于使用继承等高级特性。 new表达式是配合构造函数使用的,例如new String(“a string”),调用内置的String函数构造了一个字符串对象。下面我们用构造函数的方式来重新创建一个实现同样功能的对象,首先是定义构造函数,然后是调用new表达式: function CO(){ this.p = “I’m in constructed object”; this.alertP = function(){ alert(this.p); } } var o2 = new CO(); 那么,在使用new操作符来调用一个构造函数的时候,发生了什么呢?其实很简单,就发生了四件事: var obj ={}; obj.__proto__ =

JS原型和原型链

江枫思渺然 提交于 2020-03-20 12:32:30
构造函数 function Foo(name, age){ this.name = name; this.age = age; this.class = 'class-1'; } var f =new Foo('zhangsan',20); 命名规则:大写字母开头; 那么,在使用new操作符来调用一个构造函数的时候,发生了什么呢?其实很简单,就发生了四件事: var obj ={}; obj.__proto__ = Foo.prototype; Foo.call(obj); return obj; 第一行,创建一个空对象obj。 第二行,将这个空对象的 proto 成员指向了构造函数对象的prototype成员对象,这是最关键的一步,将新生成的对象的 prop 属性赋值为构造函数的prototype属性,使得通过构造函数创建的所有对象可以共享相同的原型。 第三行,将构造函数的作用域赋给新对象,因此Foo函数中的this指向新对象obj,然后再调用Foo函数。于是我们就给obj对象赋值了。 第四行,返回新对象obj。 构造函数 - 扩展 var a = {} 其实是 var a = new Object()的语法糖; var a = [] 其实是 var a = new Array() 的语法糖; function Foo(){...} 其实是 var Foo = new

《JavaScript 模式》读书笔记(2)— 基本技巧3

谁都会走 提交于 2020-03-20 11:03:11
  这是基本技巧的最后一篇内容,这篇内容示例代码并不多。主要是概念比较多一点。 编码约定    确定并一致遵循约定比这个具体约定是什么更为重要。 一、缩进    无论是使用tab还是空格,只要是一致遵循的,是什么并不重要。JSLint的默认值是4个空格来缩进。那么需要对哪些内容进行缩进呢? 只需要对大括号中所有的代码进行缩进。 主要包含函数体、循环体(do、while、for、for-in)、if语句、switch语句和对象字面量引用的属性。 二、大括号    应该经常使用大括号,甚至在可选的情形下,都请使用大括号。 从技术上来说,在if语句和for语句中如果仅有一行语句,可以不用大括号,但是为了一致性和更方便升级,最好还是使用大括号。 三、开放的大括号位置    开发人员在讲开放的大括号放置于什么位置有不同的选择,是和语句放在同一行还是放在接下来的一行中呢? if(true) { alert("It's TRUE!"); } // 或者 if(true) { alert("It's TRUE!"); }   在这个特定的范例中,采用哪种方式只是个人习惯的不同。但是有些情形下随着大括号的位置不同,程序的执行结果也会有所不同。这是由分号插入机制导致的。 // 警告:未预期的返回值 function func() { return { name: "Batman" }; } //

JavaScript 对象基础

余生长醉 提交于 2020-03-20 10:41:24
JavaScript 对象基础 JavaScript 对象的基本形式、对象的创建方式、构造函数、包装类等 对象的格式 基本格式 对象使用一个 {} 进行包裹,内部属性以键值对形式声明 示例 var teacher = { name: "pgjett", age: "22", teach: function () { console.log("I teach javascript"); }, drink: function () { console.log("I drink beer"); } } 对象的的属性 属性的增删改查 var teacher = { name: "pgjett", var teacher = { name: "pgjett", age: "22", teach: function() { console.log("I teach javascript"); }, drink: function() { console.log("I drink beer"); } } // 增加 teacher.smook = function(){ console.log("I smook"); } // 删除 delete teacher.name; // 改变 teacher.teach =function() { console.log("I teach java")

const、static关键字

旧巷老猫 提交于 2020-03-20 08:02:34
3 月,跳不动了?>>> 最近一直在迷惑着这两个关键字,感觉大脑里一片糊涂,特此整理一下: 一、const 1、数据常量,不能修改,必须初始化; 1)非类的数据成员 a、指向const对象的指针(remember) b、const指针(remember) 2)作为类的数据成员 a、必须在构造函数中进行初始化,并且必须在初始化列表中进行初始化; 引申:必须对任何const或引用类型成员以及没有默认构造函数的类类型的额任何成员使用初始化式; 2、const成员函数 作为类的const成员函数,const关键字放在函数声明的后面,在函数定义时,也必须将const关键字放在函数的后面(对于static不是这样)。 1)设计const成员函数主要是不改变对象,正因为这样一个const成员函数不可能再声明为static,因为static加在成员函数上就表明该函数属于类而不属于类对象; 2)const成员函数可以被const对象或者非const对象调用,当被const对象调用时,函数中的this指针就变成了一个指向const对象的const指针(因为this指针本书就是一个const指针,它就是指向调用该函数的对象); 二、static 静态的; 1、对于对象进行修饰 1)对于全局变量加上static关键字后其存储位置没有变,还是在全局存储区,但是缩小了其作用域,生命周期也没有变; 2

C#反射的特性

南笙酒味 提交于 2020-03-20 06:53:21
如果您现在对反射还不太了解的话,那么可以先看看这篇博文,来粗略的了解一下反射吧。 什么是反射   反射特性(Attribute)   1. C#内置特性介绍   特性是一个对象,它可以加载到程序集及程序集的对象中,这些对象包括 程序集本身、模块、类、接口、结构、构造函数、方法、方法参数等,加载了特性的对象称作特性的目标。特性是为程序添加元数据(描述数据的数据)的一种机制,通过它可以给编译器提供指示或者提供对数据的说明。 注意:特性的英文名称叫做Attribute,在有的书中,将它翻译为“属性”;另一些书中,将它翻译为“特性”;由于通常我们将含有get和/或set访问器的类成员称为“属性”(英文Property),所以本文中我将使用“特性”这个名词,以区分“属性”(Property)。 上面这个提示是在VS中的,大家在编程的过程中应该有遇到过的。 下面我们就引入第一个特性 1.1 System.ObsoleteAttribute 特性 我们通过如图示这个例子来看一下特性是如何解决上面的问题:我们可以给旧的SendMsg()方法上面加上Obsolete特性来告诉编译器这个方法已经过时,然后当编译器发现当程序中有地方在使用这个用Obsolete标记过的方法时,就会给出一个警告信息。 namespace TestObsolete { class Program { public class

Nginx 单元测试自动化浅析之一-Test::Nginx源码分析和使用

北战南征 提交于 2020-03-19 12:53:32
3 月,跳不动了?>>> http://www.taobaotest.com/blogs/2433 主题 Nginx 源码分析 单元测试 Nginx 单元测试自动化浅析之一 -Test::Nginx 源码分析和使用 Test::Nginx 是用来进行 Nginx 测试的一个 perl 语言的框架。该框架提供动态编写、更改 nginx 配置文件的功能,提供 Nginx 服务器启动关闭的功能以及提供 http 请求等功能。接下来通过分析源码来介绍该测试框架的使用。 源码分析 接下来介绍 Test::Nginx 测试框架中常用的功能的实现,主要包括构造函数, Nginx 配置文件的加载,服务器的启动,服务的获取,以及服务器的关闭的实现。 构造函数: 使用 Test::Nginx 模块应该先调用其构造函数,在 perl 中的构造函数是调用的是 new() 方法。构造函数完成了测试需要的临时文件夹的建立,构造函数源码如下: 其中 $self->{_testdir} 实例化 hash 变量,并在 /tmp/ 文件夹下创建名为 nginx-test-XXXXXXXXXX 的文件夹, XXXXXXXXXX 表示这些位的文件夹名称为随机生成。理论每次实例化对象时创建的文件夹名称都不一样。 通过在测试用例中用 Test::Nginx->new() 来获取 Test::Nginx 的实例。 Nginx

C++友元函数

偶尔善良 提交于 2020-03-18 22:04:35
友元函数的基本概念 1、概念:可以在类A中通过关键字 friend 声明或定义 某个独立函数 或 另一个类B的某个成员函数 或 另一个类B 为类A的 友元函数 ,友元函数可以 无限制 的存取类A的成员(包括私有、公有和保护成员)。 2、定义形式:friend 函数类型 函数所在类名::函数名(参数列表); 3、友元函数可在类中的私有或公有部分通过关键字friend说明或定义,但如在类中声明,而在类外定义,就不能再在类外使用friend关键字。友元函数作用域的开始点在它的说明点,结束点和类的作用域相同。 4、友元函数应被看作类的接口的一部分,使用它的主要目的是提高效率,因为它可以直接访问对象的私有成员,从而省去调用类的相应成员函数的开销。友元函数的另一个优点是:类的设计者不必在考虑好该类的各种可能使用情况之后再设计这个类,而是可以根据需要,通过使用友元来增加类的接口。 一、类外的独立函数作为类的友元函数 类外的独立函数作为类的友元函数,这个独立函数其实就是一个普通的函数,仅有的不同点是:它在类中被说明为类的友元函数,可以访问该类所有对象的私有成员。 【例1】使用友元函数计算两点距离的例子 #include <iostream> #include <cmath> using namespace std; class Point {   private:    double X,Y;