代码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的更多相关文章

  1. java的String类型为什么是final

    (转自:http://www.cnblogs.com/ikuman/archive/2013/08/27/3284410.html) 最佳答案: 主要是为了“效率” 和 “安全性” 的缘故.若 Str ...

  2. nodejs的 new String

    已知rwo4的记录中baitaiid是001// row4为jhlist开始循环结果 for(var i=0;i<row4.length;i++) { var baiTaiId=new Stri ...

  3. String被设计成不可变和不能被继承的原因

    String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类 ...

  4. java问题解读,String类为什么是final的

    一.理解final 望文生义,final意为“最终的,最后的”,我理解为“不能被改变的”,它可以修饰类.变量和方法. 所以我是否可以理解为被它所修饰的类.变量和方法都不能被改变呢?答案是”是“,因为有 ...

  5. JavaScript包装对象

    JavaScript是面向对象的语言,使用”.”操作符可以访问对象的属性和方法,而对于基本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法 ...

  6. 【vijos】1789 String(组合计数+奇怪的题)

    https://vijos.org/p/1789 我yy了一下发现我的方法没错啊,为嘛才80分..(后来看了题解,噗,还要判断k>n和k=1的情况QAQ 当k=1的时候,答案显然是m^n 当k& ...

  7. String 是一个奇怪的引用类型

    开局两张图,内容全靠刷! 马甲哥看到这样的现象,一开始还是有点懵逼. 这个例子,string是纯粹的引用类型,但是在函数传值时类似于值传递: 我之前给前后示例的内存变化图吧: 根因就是大多数高级语言都 ...

  8. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  9. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

随机推荐

  1. 在ios中微信video和audio无法自动播放解决方案

    WeixinJSBridgeReady页面初始化的时候会执行 document.addEventListener("WeixinJSBridgeReady", function ( ...

  2. 12.线程通信CyclicBarrier

    CountDownLatch 监听某个线程的初始化,等待初始化执行完毕后,通知主线程工作.延迟.阻塞的是主线程,在单个线程中. CyclicBarrier 针对多个线程.线程池,多个线程初始化准备之后 ...

  3. vi 新建编辑文件时报错 E212 can’t open file for writing

    在vi修改防火墙配置时,不能够保存,报E212 can’t open file for writing错误. 网上大概给出了两种答案. 一是权限不够,可以用root权限事实,或者sudo 操作. 二是 ...

  4. 用editplus编写python

    语法高亮和自己主动补全: http://www.editplus.com/files/pythonfiles.zip 选择菜单条的-->工具-->配置用户工具-->设置&语法 ...

  5. Windows录音API学习笔记

    Windows录音API学习笔记 结构体和函数信息  结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力. typedef struct { WORD      wMid; 用于波形 ...

  6. Python 类变量 实例变量

    类变量: ​ 是可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的).例如下例中,num_of_instance 就是类变量,用于跟踪存在着多少个Test 的实例. 实例变量: 实例 ...

  7. EXCEL在使用中,jar导入问题

    报错:The type org.apache.poi.ss.usermodel.Workbook cannot be resolved. It is indirectly referenced fro ...

  8. 在k8s中的基本概念

    在k8s中的基本概念 一.Pod1. podk8s下最重要也最基本的概念,由一个根容器Pause和许多用户业务容器组成,是容器的载体. 2. pod的yaml定义格式及字段 apiVersion: v ...

  9. PagerAdapter刷新问题

    一.PagerAdapter介绍 PagerAdapter简介 ListView 大家应该都很熟悉吧!ListView 一般都需要一个 Adapter 来填充数据,如 ArrayAdapter.Sim ...

  10. 修改tcp数据内容

    http://blog.sina.com.cn/s/blog_6f0c85fb0100xi1x.html 2.6内核基于NetFilter处理框架修改TCP数据包实现访问控制 参考上面的钩子函数,结合 ...