delete

C++11 关键字default和delete

江枫思渺然 提交于 2020-02-25 01:15:24
1、 =default 和=delete 概述 任何事物的出现都必然有着其出现的理由,伴随着每一个新的概念产生都会带来一系列的便利和价值。C++在不断的演变与发展,与此同时,伴随着许多新的特性和功能产生。=default、=delete 是C++11的新特性,分别为:显式缺省(告知编译器生成函数默认的缺省版本)和显式删除(告知编译器不生成函数默认的缺省版本)。C++11中引进这两种新特性的目的是为了增强对“类默认函数的控制”,从而让程序员更加精准地去控制默认版本的函数。 其具体的功能和使用方法下面将一一道来。 2、 类与默认函数 在讲解关键字 default和delete 之前,先对类和类的默认函数作下描述与说明,从而加深对这两个关键字的理解与认知。既要知其然,也要知其所以然。C++中,当我们设计与编写一个类时,若不显著写明,则类会默认为我们提供如下几个函数: 1 构造函数 2 析构函数 3 拷贝构造函数 4 拷贝赋值函数(operator=) 5 移动构造函数 以及全局的默认操作符函数 1 operator, 2 operator & 3 operator && 4 operator * 5 operator-> 6 operator->* 7 operator new 8 operator delete 注:若我们在类中实现了这些版本之后,编译器便不会生成其对应的默认函数版本

RESTful API设计概要

懵懂的女人 提交于 2020-02-24 10:02:35
一、简介 1. 什么是REST   REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。” 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。   REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 所以我们这里描述的REST也是通过HTTP实现的REST。 特点: REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征

new表达式,operator new和placement new介绍

*爱你&永不变心* 提交于 2020-02-23 19:08:02
new/delete是c++中动态构造对象的表达式 ,一般情况下的new/delete都是指的new/delete表达式,这是一个操作符,和sizeof一样,不能改变其意义。 new/delete表达式的声明如下: ::(optional) new (placement_params)(optional) ( type )initializer(optional) ::(optional) delete expression 除了全局作用符::和初始化参数,还有个 placement_params,这是不常见的,要理解这个参数的作用,就要了解operator new和placement new。 众所周知,new表达式做了两个工作:1.分配内存;2.在分配的内存上调用构造函数构造对象。比如我们分配一个string对象 string *str = new string(“Kian”); 编译器首先调用operator new分配一块内存,类似于malloc,然后在mem上面调用构造函数, 1.void *mem = operator new(sizeof(string)); 2. create string at men. 第二步我们是控制不了的,但是operator new却是可以修改的。 Operator new/delete的声明如下: void* operator new (

MySQL(九)插入、更新和删除

懵懂的女人 提交于 2020-02-23 11:56:09
常用的SQL语句,除了select用于查询,还有insert、update、delete等。 一、insert insert: 用来插入(或添加)行到数据库中,常见方式有以下几种: ① 插入完整的行; ② 插入行的一部分; ③ 插入多行; ④ 插入某些查询的结果; 1、插入完整的行 例如:insert into usertable values(null, 'zhangsan', '25', '1992-05-20', null, null); 这条SQL语句插入一条新的个人信息到usertable表,存储在每个表列中的数据在values中给出,对每个列必须提供一个值,如果某个列没有值,应使用null(假定表允许对该项指定空值); 各个列必须以它们在表定义中出现的次序填充;缺点在于;高度依赖表中列的定义次序,如果表结构出现变动,难免出现问题。 更安全的方法如下(相对比较麻烦): 例如:insert into usertable( user_id, user_name, user_year, user_birthday, user_address, user_email) values(null, 'zhangsan', '25', '1992-05-20', null, null); 这条SQL语句与上面的SQL语句完成同样的工作,但给出了列名

项目架构开发:展现层(上)

浪尽此生 提交于 2020-02-22 15:05:00
上次我们创建了项目的服务层,服务层在业务逻辑简单,或项目运行初期不是很容易体现出他的价值;传送门: 项目架构开发:服务层(上) 服务层专门处理非业务逻辑的一些功能,比如缓存、异常处理、组织多个应用逻辑等;这次我们搭建最上层的展现层,用到的知识面包括以下: asp.net mvc5 + bootstrap + autofac + AutoMapper 这次我们没有用服务层,而是直接调用应用逻辑层接口方法,其实对小项目来说,这样已经足够了;服务层我们下次再讲吧 现在开始吧! 1、创建MVC + UnitTest 先搭建个框架,网上找的后台模板 2、ViewModel UI的数据载体最好新建一个viewmodel,这样就不用依赖DTO或PO,因为页面上显示的数据实体一般比较大,会封装比DTO多的多的属性 LoginUserViewModel.cs 1 using Infrastructure.Common; 2 using System; 3 using System.Collections.Generic; 4 5 namespace Presentation.MVC.Models 6 { 7 public class LoginUserViewModel 8 { 9 public int RowNumber { get; set; } 10 11 public Guid Id {

js坦克大战

▼魔方 西西 提交于 2020-02-22 05:06:40
bug一大堆 代码下载 <!DOCTYPE html> <html> <head> <title>tank</title> <style type="text/css"> body { margin: 0px; padding: 0px; border: 0px; } .map { position: absolute; top: 30px; width: 390px; height: 390px; left: 50%; margin-left: -200px; border: 9px solid orange; background-color: #8B8989; } .mapchild { position: absolute; background-size: cover; } #ifo { position: absolute; top: 30px; width: 418px; height: 418px; left: 50%; margin-left: -200px; color: green; text-align: center; background-color: #FAEBD7; z-index: 10; } </style> </head> <body> <div id="ifo"> <h1 id="ifo_title"></h1> <h3>按键说明:</h3>

C++中delete和delete[]的区别

江枫思渺然 提交于 2020-02-22 04:38:17
原帖地址 http://www.cnblogs.com/charley_yang/archive/2010/12/08/1899982.html 一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 请看下面的程序。    #include <iostream>; using namespace std; class T { public: T() { cout << "constructor" << endl; } ~T() { cout << "destructor" << endl; } }; int main() { const int NUM = 3; T* p1 = new T[NUM]; cout << hex << p1 << endl; // delete[] p1; delete p1; T* p2 = new T[NUM]; cout << p2 << endl; delete[] p2; }

Mysql的建表规范与注意事项

99封情书 提交于 2020-02-22 04:14:57
一、 表设计规范 库名、表名、字段名必须使用小写字母,“_”分割。 库名、表名、字段名必须不超过12个字符。 库名、表名、字段名见名知意,建议使用名词而不是动词。 建议使用InnoDB存储引擎。 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。 建议使用UNSIGNED存储非负数值。 建议使用INT UNSIGNED存储IPV4。 整形定义中不添加长度,比如使用INT,而不是INT(4)。 使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED。 不建议使用ENUM类型,使用TINYINT来代替。 尽可能不使用TEXT、BLOB类型。 VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。 VARCHAR(N),N尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存。 表字符集选择UTF8。 使用VARBINARY存储变长字符串。 存储年使用YEAR类型。 存储日期使用DATE类型。 存储时间(精确到秒)建议使用TIMESTAMP类型,因为TIMESTAMP使用4字节,DATETIME使用8个字节。 建议字段定义为NOT NULL。 将过大字段拆分到其他表中。

js引用类型基础——数组

别来无恙 提交于 2020-02-21 23:46:13
数组,顾名思义就是将一组数组合在一起,即数组是数据的有序集合。 js数组是无类型的,数组元素可以是任意类型数据, js数组是动态的,根据需要它们会增长或缩减。 我们知道数组是对象,数组的索引其实相当于对象的属性名,只不过这里只能用方括号来访问。 创建数组 (1)构造函数法 使用Array()构造函数可以创建一个数组。 var a = new Array(); //创建一个新数组 var b = new Array(10); //创建长度为10的空数组,10并非是数组元素个数的上限 (2)字面量表示法 使用方括号创建数组,数组元素用逗号隔开。 var color = ["blue","red","yellow"]; var count = [1,,3]; //数组有3个元素,中间的元素为undefined var undefs = [,,,]; //不要这样写,会被当做3或者4个元素,视浏览器而定 上述数组count中间的元素若显式的定义为undefined,情况略有不同 虽然二者的数组长度都是3,但是前者是个稀疏数组,元素个数只有2,后者是稠密数组,元素个数为3。 数组长度 数组有一个length属性,一般情况下,length属性值等于数组元素的个数。当数组是稀疏数组时length值大于数组元素个数 数组长度是动态的,因此可以通过改变length属性值来增删数组元素

Mysql 删除数据表的三种方式详解

可紊 提交于 2020-02-21 14:32:00
用法: 1、当你不再需要该表时, 用 drop; 2、当你仍要保留该表,但要删除所有记录时, 用 truncate; 3、当你要删除部分记录或者有可能会后悔的话, 用 delete。 删除程度可从强到弱如下排列: 1. drop table tb; drop 是直接将表格删除,无法找回。例如删除 user 表: drop table user; 2. truncate (table) tb; truncate 是删除表中所有数据,但不能与where一起使用; TRUNCATE TABLE user; 3. delete from tb (where); delete 也是删除表中数据,但可以与where连用,删除特定行; -- 删除表中所有数据 delete from user; -- 删除指定行 delete from user where username ='Tom'; truncate 和 delete 的区别: 1. 事物 truncate删除后不记录mysql日志,因此不可以rollback,更不可以恢复数据;而 delete 是可以 rollback ; 原因:truncate 相当于保留原mysql表的结果,重新创建了这个表,所有的状态都相当于新的,而delete的效果相当于一行行删除,所以可以rollback; 2. 效果 效率上 truncate 比