文章列表
所有文章的完整列表,按时间倒序排列
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
}
对于最后一个类型推导有几个需要注意
v被推导为const int *而这里auto代替int,但是u等于6还是要写的,否则编译器会报错。
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 &
总结:
最开始,我就是用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");
}


