奇怪的string
代码1:
#include <iostream>
//#include <string>
using namespace std; int main(int argc, char **argv)
{
string s = "hello world!";
//cout << s << endl;
return ;
}
这段代码仅仅是定义了string,而没有使用它,可以编译通过,正常运行。推测原因是:间接包含了string的定义,因此仅仅用来定义是可以的,但是有点讲不通的是,一般这种类似于预定义的情况,只能定义该类型的指针或者引用。不能定义它本身的变量的。所以,此处是疑问1.
代码2:
#include <iostream>
//#include <string>
using namespace std; int main(int argc, char **argv)
{
string s = "hello world!";
cout << s << endl;
return ;
}
这段代码编译不过。我的理解是,使用了此变量,但是没哟包含头文件,所以编译不过很合理,但是结合下一段代码来看,就有点奇怪了。
代码3:
#include <iostream>
//#include <string>
using namespace std; int main(int argc, char **argv)
{
string s = "hello world!";
cout << s.c_str() << endl;
return ;
}
这段代码可以编译过并正常执行。这里与上一段代码唯一的区别就是输出时先将string转换为了字符串类型。这里是疑问2.
代码4:
#include <iostream>
#include <string>
using namespace std; int main(int argc, char **argv)
{
string s = "hello world!";
cout << s << endl;
return ;
}
这段代码可以编译通过并正常执行。这里结果也是在意料之中的。
综合上面的几种情况,对string的使用还是有一些疑问的,虽然不影响正常使用,但是还是喜欢钻一钻这个问题,打破砂锅问到底。现在自己的知识还解释不了这个问题,只能待自己慢慢积累了。
加油吧,少年!
奇怪的string的更多相关文章
- java的String类型为什么是final
		
(转自:http://www.cnblogs.com/ikuman/archive/2013/08/27/3284410.html) 最佳答案: 主要是为了“效率” 和 “安全性” 的缘故.若 Str ...
 - nodejs的 new String
		
已知rwo4的记录中baitaiid是001// row4为jhlist开始循环结果 for(var i=0;i<row4.length;i++) { var baiTaiId=new Stri ...
 - String被设计成不可变和不能被继承的原因
		
String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类 ...
 - java问题解读,String类为什么是final的
		
一.理解final 望文生义,final意为“最终的,最后的”,我理解为“不能被改变的”,它可以修饰类.变量和方法. 所以我是否可以理解为被它所修饰的类.变量和方法都不能被改变呢?答案是”是“,因为有 ...
 - JavaScript包装对象
		
JavaScript是面向对象的语言,使用”.”操作符可以访问对象的属性和方法,而对于基本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法 ...
 - 【vijos】1789 String(组合计数+奇怪的题)
		
https://vijos.org/p/1789 我yy了一下发现我的方法没错啊,为嘛才80分..(后来看了题解,噗,还要判断k>n和k=1的情况QAQ 当k=1的时候,答案显然是m^n 当k& ...
 - String 是一个奇怪的引用类型
		
开局两张图,内容全靠刷! 马甲哥看到这样的现象,一开始还是有点懵逼. 这个例子,string是纯粹的引用类型,但是在函数传值时类似于值传递: 我之前给前后示例的内存变化图吧: 根因就是大多数高级语言都 ...
 - ElasticSearch 5学习(9)——映射和分析(string类型废弃)
		
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
 - 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念
		
转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...
 
随机推荐
- pycharm的插件pylint报错:java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality stat
			
java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. ...
 - 流畅的python第十七章使用期物处理并发
			
从 Python 3.4 起,标准库中有两个名为 Future 的类:concurrent.futures.Future 和asyncio.Future.这两个类的作用相同:两个 Future 类的实 ...
 - MVC工作原理
			
MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller) ...
 - phpstorm快速跳转到错误行
			
phpstorm的快捷键,在网上可以搜索出很多,唯有“快速跳到错误行”的快捷键几乎搜索不出来. 看着错误提示,要一行一行的用眼睛去看,心累. 贴在这里,随时取用,再也不怕忘记了. Shift + F2 ...
 - excel宏调用webservice使用存储过程同步excel数据的方法
			
excel宏: 随后更新 webservice: 1.创建空应用程序 2.加入web服务 3.创建数据库訪问类库DataHelper sqlserver: 创建数据同步的存储过程 下面是一些须要的代码 ...
 - mysql 比较隐秘的问题
			
2017-11-13 13:47:27:DEBUG DubboServerHandler-192.168.30.114:20990-thread-5 com.yryz.qshop.modules.in ...
 - CocoSourcesCS 1
			
CocoSourcesCS 1 /*------------------------------------------------------------------------- Compiler ...
 - CentOS下配置HTTPS訪问主机并绑定訪问port号
			
系统环境: Linux: CentOS release 6.5 (Final) LAMP 步骤 1.lamp开启ssl # yum install openssl mod_ssl -y # 安装ope ...
 - 记一次MySQL找回用户数据
			
事情经过 有天,我们公司外区的一个销售C说他8月3号以前的工作流记录找不到了.问清缘由,原来是更新了微信号(我们公司的工作流是基于企业微信开发的).经过分析,微信号和流程数据并没什么关系,所以初步得出 ...
 - Remove all your local git branches but keep master
			
Sometimes after a sprint, all the remaining branches are just taking up space. Here's a small snippe ...