• (7)第3章的开始


    第二章介绍的内置类型是由C++语言直接定义的。这些类型,比如数字和字符,体现了大多数计算机硬件本身具备的能力,标准库定义了另外一组更具有更高级性质的类型,它们尚未直接实现到计算机硬件中————————————————————这段没看懂,P74

    命名空间的using声明(头文件最好不用using声明)

    std::cin

    =编译器从作用域操作符(::)左侧名字所示的作用域中寻找右侧那个名字=要使用命名空间std中的名字cin。

    每次使用cin都要声明std很繁琐,现在介绍一种最安全的方法:using声明(后面还会介绍另一种)

    using std::cin;

    =using声明,当我们使用名字cin时,从命名空间std中获取她(要注意,每个名字都需要独立的using声明!)

    关于格式,和普通的声明变量不太一样:

    using std::cout,std::cin;           //error

    using std::cin;using std::cout;using std::endl; // Ture

    标准库类型string

    string是可变长的字符序列,其定义在std命名空间。

    note:C++标准对库类型所提供的操作做了详细规定(意味着有最好的使用指南,不需要你去猜),另一方面也对库的实现者做出一些性能上的需求(这些实现者基本上是领域牛人,可以基本相信),因此,标准库类型对于一般应用场合来说有足够效率(注意,只是效率,别的兼容性什么的不是重点)

    初始化方法:

    #include <iostream>
    #include <string>
    using std::cout; 
    using std::endl;
    using std::string;
    int main()
    {
    	//默认初始化,s1=空串
    	string s1;
    	cout << s1 << endl;
    	//s2是s1的副本,si是空串所以s2也是空串
    	string s2(s1);
    	cout << s2 << endl;
    	//和s2的初始化一样,只不过s2是用初始化列表初始化的
    	string s3 = s1;
    	cout << s3 << endl;
    	//s3是字面值value的副本(value这个字面值最后那个空字符没有拷贝到s4).
    string s4("value"); cout << s4 << endl; //等价于s4的初始化,只不过s4是初始化列表初始化的。 //不能用花括号初始化列表初始化string string s5 = "value"; cout << s5 << endl; //s6初始化为连续10个字符c组成的串 string s6(10, 'c'); cout << s6 << endl; system("pause"); return 0; }

    这有2个疑问,s4有没有一个空字符在最后面(即s4里有的空字符不一定是复制过去的而是定义时自己加的)?string定义的字符串末尾都有空字符?

    /*验证:
    *1.是否string定义的字符串都有一个空字符在最后
    *2.拷贝初始化后,虽然没有拷贝最后的空字符,但是该初始化后是否还是会自己加上一个空字符
    */
    #include <iostream>
    #include <string>
    using std::cout; 
    using std::endl;
    using std::string;
    int main()
    {
    	//验证1——结果是确实有一个空字符在最后
    	string s1 = "abc";
    	cout << s1[0] << s1[1] << s1[2] << "——" <<s1[3] << "——" <<endl;
    	//验证2——结果是确实会自己加上一个空字符
    	string s2 = s1;
    	cout << s2[0] << s2[1] << s2[2] << "——" << s2[3] << "—— " <<endl;
    	system("pause");
    	return 0;
    }
    //先这样理解,这种验证比不得看机器码。

    我们规定:

    使用等号初始化一个变量,编译器把等号右侧的初始值拷贝到新创建的对象中去,这种操作称为拷贝初始化(copy initialization)

    不使用等号的称为直接初始化(direct initialization)。

    今天买的《Head First HTML与CSS》、《CSS权威指南》、《HTML5权威指南》到手了,以及图书馆借了《HTML5实战》。把这些书都翻了翻目录和开头一点内容,准备开始白天C++,晚上学前端的生活咯~

    打算先把《Head First HTML与CSS》、《HTML5权威指南》交替着看完,然后开始看《HTML5实战》、《CSS权威指南》。这四本看完估计早毕业了~

      

    wuduojia
  • 相关阅读:
    TreeMap
    索引
    B-树、B+树
    硬盘速度、存储方式
    2-3树
    多叉树、2-3-4树
    红黑树
    平衡树、AVL树
    树、多路树、二叉树
    Java实现后缀表达式建立表达式树
  • 原文地址:https://www.cnblogs.com/wuduojia/p/7654464.html
Copyright © 2020-2023  润新知