zoukankan      html  css  js  c++  java
  • 2、C++ Primer 4th 笔记,基本语言相关的概念[1]

    1C++中,每个表达式都会产生一个结果,通常是将操作符作用到其操作数所产生的值。当操作符是输出操作符时,结果是左操作数的值。也就是说,输出操作返回的值是输出流本身。

    2、注释对不可嵌套。指/**/

    3、我们使用istream对象作为while的测试条件时,结果是测试流的状态,如果是流是有效的(输入的是有效字符或没有到达文件结尾),则测试成功。

    4、因为头文件使用尖括号是找头文件的时候先从系统目录下找,双引号是先从工程所在的目录下找,所以一般,标准库的头文件用尖括号,非标准库用双括号。

    5、默认情况下,读cin会刷新cout,当程序正常结束时,cout也会被刷新。

    6C++是静态类型语言,在编译时执行类型检查。

    7C++中,把负值赋给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。

    8、变量类型决定了变量的内存大小和布局、能够存储于该内存中的值的取值范围及可应用在该变量上的操作集。

    9、左值可以出现在赋值语句的左边或右边,如变量是左值。右值只能出现在赋值语句的右边,如数字字面值是右值,右值只能读不能写。

    10、一般而言,对象是内存中具有类型的区域。

    11、初始化不是赋值,初始化是创建变量并给初始值,而赋值是擦除对象的当前值并且新值代替。

    从概念上讲,赋值操作要做以下工作:

    s1 = s2

    1)先把s1占用的相关内存释放掉;

    2)然后再分配给s1足够存放s2副本的内存空间;

    3)最后把s2中的所有字符复制到新分配的内存空间。

    12变量的定义用于为变量分配存储空间,还可以指定初始值,在一个程序中,变量有且仅有一个定义。

    声明用于向程序表明变量的类型和名字,定义也是声明。声明可以有多次。

    只有当声明也是定义时,声明才可以有初始化式,且只有当extern声明位于函数外部时,才可以含有初始化式。

    12、非const变量默认为extern。要使const变量能够在其他的文件中访问,必须显式地指定它为extern

    13、复合类型是指用其它类型定义的类型。不能定义引用类型的引用。

    14const引用是指const对象的引用。

    15、非const引用只能绑定到与该引用同类型的对象;const引用则可以绑定到不同但相关的类型的对象或绑定到右值。

    16、枚举成员都是常量表达式。常量表达式是编译器在编译时就能够计算出结果的整形表达式。

    17const对象默认为定义它的文件的局部变量。当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const的变量,名称和值都一样。

    18、转义字符是反斜线后面跟着一个字符,一个3位八进制数或一个十六进制的数。

    19、为了避免溢出,保存一个string对象size的最安全的方法是使用标准库类型string::size_type;它被定义为与unsigned具有相同的含义。但是不要把size的返回结果赋值给个int变量。

    20、字符串和字面值的连接

    当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。

    21vector是类模板,只有具现后,如vector<int>后才是数据类型。

    必须是已存在的元素才能用下标操作进行索引。通过下标操作进行赋值时,不会添加任何元素。

    22、迭代器

    vector<int>::const_iterator //an iterator that cannot write elements

    const vector<int>::iterator //an iterator whose value cannot change

    任何改变vector长度的操作都会使已存在的迭代器失效;如在调用push_back之后,就不能再信赖先前指向vector的迭代器的值了。

        difference_type vector定义的signed整形,用于存储两个迭代器间的距离。

    23bitset

    bitset类也是一种类模板,通过长度来初始化。如bitset<32>

    可以用unsigned值初始化bitset对象;以低阶位对齐。也可以string对象初始化bitset对象;string对象和bitset对象之间是反向转化的:string对象的最右边字符(下标最大的那个字符)用来初始化bitset对象的低阶位(即下标为0的位)

    string strval("1000");

    bitset<32> bitvec4(strval);

  • 相关阅读:
    重装window7系统(使用U盘)
    冒泡排序
    使用jad进行反编译.class文件生成.java
    java代码编写1+2+3+....+100之和
    springboot多模块项目不同模块组件不能@autowired问题
    django CBV和FBV写法总结
    django cookie与session组件
    djjango cookie和session 的几种常用需求使用方法
    django 一个关于分组查询的问题分析
    Django book manage system
  • 原文地址:https://www.cnblogs.com/mydomain/p/1970795.html
Copyright © 2011-2022 走看看