C++11引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能方便地获得复杂的类型,还能简化书写,提高编码效率。下面说一下C++中的auto

旧标准

auto其实并不是一个新的关键字,在旧的标准C++98/03中,它代表着“具有自动存储周期的局部变量”。啥意思呢?就是我们平常所说的变量,他与static相对。就是说所有非static类型的都是“具有自动存储期的”。也就是说在旧的标准下。


autoint i =3;//等价于int i=3;

新标准

在C++11中,auto作为一个新的类型指示符(如int,double)来指示编译器的,但是auto申明的变量的类型必须由编译器在编译时期推导出来,也称类型推导。这种类型推导不是C++所独有的,还有很多具备这种能力的语言(如Python,Javascript)。我们先来看一段Python代码


name ="thinkmoon"print"hello,"+ name 

在这里的name是不需要定义类型的,因为这个类型很容易被推导为字符串性,如过要想在C++中实现这种效果,我们可以这样。


#include<iostream>

int main(){

	auto name ="thinkmoon"; 

	std::cout <<"hello,"<< name << std::endl;

	return0;

}

效果是一样的,是不是觉得写起来特别的方便呢?

但是需要注意的是,在C++中这种静态类型推导是发生在编译期间的。而像Python这种动态类型推导却是发生在运行期间的。

auto的基本用法


#include<iostream>

usingnamespace std;

int main(){

auto x =5; 

cout << x << endl;//x被推导为intauto p =newauto(1);    

cout <<"*"<< p <<"="<<*p << endl;//p被推导为

int *constauto*v =&x, u =6; 

cout <<"*"<< v <<"="<<*v <<"\n u="<< u << endl;//v被推导为const int *,u被推导const int

}

对于最后一个类型推导有几个需要注意

  1. v被推导为const int *而这里auto代替int,但是u等于6还是要写的,否则编译器会报错。

  2. u的等号后面只能写整型的变量,否则会报错,因为不能让编译器产生具有二义性的推断。

其实我们学习的时候可以把auto理解为占位符,它只是占着一个位置并不做其它的事情,由编译器将其类型推导出来再用对应的类型去运行,所以这个时候auto的类型推导是不能让编译器产生二义性的。

auto的推导规则


int x =0;auto* a =&x;//auto推导为int,

auto b =&x;//auto推导为int *,即使不申明为指针也能推断为指针

auto& c = x;//auto推导为int,等价于int 

auto d = c;//auto推导为int,auto会抛弃右值的引用类型

const auto e = x;//e是const int类型,

auto f = e;//f是int型constauto&g = x;//g是const 

int & auto & h = g;  //h是const int & 

总结:

📅 2019-01-16

最开始,我就是用github-page部署博客的,刚开始的时候github-page是不支持自定义域名https的,所以你一定得用默认域名*.github.io才能使用https,要么嘛,你就放弃使用https。

那些不堪回首的博客迁移史

1. 最初的wordpress

刚开始的wordpres是放在我的服务器上的,而且还是与微信公众号对接好的(有相关插件),然后可以加很多牛逼的插件,完成一些很神奇的效果。我当时是装了蛮多插件的,比如:Jetpack全套啊,SMTP,All of SEO等等。好玩是好玩,但是对于我这种隔几天就要折腾一下服务器的。wordpress经常被我玩坏。然后开始寻找解决方案。

2. 后来的wordpress官网

wordpress的官网是支持托管网站的,而且免费。再加上怎么玩都不会坏。但是同时免费版也限制了很多功能。比如,自定义插件啦,自定义域名之类的。其实这都能够接受,最让我无法忍受的是学校的网络,访问起来特别慢。大约一个页面要5秒中左右才开始渲染。强迫症不能忍

3. 轻量的gitblog

这是一个好东西,也是这个让我接触到了page服务这种东西,有关gitblog的更多可以看我这篇文章使用gitblog搭建个人博客.md, 其实除了小众之外没什么别的不好。但是我那颗不甘平静的心依旧想要折腾。

4. 未配置成功的Jekyll

不知道是当时认知有限还是英语太差,总之我按着官网的教程没安装成功,再加上不太喜欢官网的主题,然后就放弃了。

5. 模仿大佬的github issue

一次偶然的机会,我发现有位大佬居然是用issue写博客的(现在才知道原来并不稀奇)

,读者一般都是github用户,评论交流起来简直不要太爽。按奈不住的我立马也这样做了。疯狂过后,就是一个人的寂寞。没有人看我不觉得奇怪,主要百度不收录哇。而且域名没在中国备案,很多事情都做不了,比如微信不能打开。

6. 新奇的hexo

我就不介绍了,有兴趣自行百度。到现在为止我还是用hexo的。

7. hexo的评论系统

最开始,用的是多说,后来下线了。

后来,用的是畅言,然后强制加广告了。

现在用的是,gitcomment,使用的是github帐号登录,缺点就是每个页面评论都要初始化。

听说Disqus不错,可是需要翻墙,不翻墙就要装个插件用精简版。

我就不改,先缓一缓。

8. hexo的托管平台选择

如前言

不过要注意有个坑,自定义域名的话,就是一定要在source文件夹中新建一个CHANME文件里面写上你的域名,不然就每次hexo d 都要设置一次。

9. hexo 的IDE选择

最开始我是用小书匠,不过写文章不错,写代码就不行。比如要改个样式什么的就非常麻烦。

后来用的是coding的webIDE,当时感觉描述很不错,事实上在网速好的情况下的确不错。但是一遇到网速不好的时候。写的代码就完全保存不了, 因为它会回退,会回退啊~

现在,用的是vs code写文章用小书匠,因为叼。

10. hexo的图床选择

用过一段时间github,后来感觉github页面放个图床会让人感觉不好。

现在用的是七牛云存储。

coding-page与github-page的优缺点

  • github百度不会爬,需要自己推送(也可以用cdn回源域名加速)

  • coding-page 短时间推送次数过多就会凉。

  • github只能设置一个域名,而且https只支持顶级域名

所以我的访问人数又要重新累计了。

待续

本文用作测试插件


var function(){

  //预计一大波人即将取关

  console.warn("You have been slained");

}

hexo-admin 测试中

📅 2019-01-16