C++Primer 中文版 第5版 学习笔记

本文是C++ Primer第五版的学习笔记,涵盖了从开始学习C++到深入理解类、函数和标准库等内容。文章详细介绍了如何在不同操作系统中结束输入、类与对象的概念、数据类型、变量初始化、指针与引用的区别、字符串、向量和数组的使用,以及表达式和语句的处理规则。此外,还强调了类型转换、函数匹配、内联与常量成员函数、构造函数与析构函数的重要性,并探讨了类的设计原则,如访问修饰符、友元和静态成员的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章 开始

  1. 遇如下输入语句,如何结束输入跳出循环呢——输入文件结束符(或输入错误,比如不是int型)——WINDOWS系统中,输入结束符的方法:Ctrl + Z ,然后enter or return 键。 UNIX(包括Mac OS X)系统中,Ctrl + D.

    while (cin >> value) {
        sum += value;
        }

    这里写图片描述

  2. 每个类实际上都定义了一个新的类型,其类型名就是类名。而类型后面的就是一个属于该类型的变量。如定义了一个类Sales_item,则定义一个类类型的变量:

    Sales_item item;

    item 是一个Sales_item类型的对象。

  3. #include包含来自标准库的头文件时,用尖括号<>包围头文件名,否则用双引号""包围。

  4. 文件重定向:这种机制允许我们将标准输入和标准输出与命名文件关联起来
    $addItems <infile >outfile
    假定$是操作系统提示符,加法程序已编译为addItems.exe的可执行文件,则上述命令会从一个名为infile的文件读取销售记录,并将结果写入到一个名为outfile的文件中,两个文件都位于当前目录。

  5. 成员函数是定义为类的一部分的函数,有事也被称之为方法。如:
    Item.isbn();
    // .点运算符只能用于类类型的对象。左边是对象,右边是成员名,效果是调用该类型的函数,()是调用运算符,里面放置实参列表(可为空)。

第二章 变量和基本类型

  1. 基本数据类型(内置类型):算数类型、空类型(不对应具体的值)
    算数类型:整数型(包括字符、布尔值)、浮点型
    内置基本类型:整数型(包括字符、布尔值)、浮点型、void、枚举;

  2. int、short、long、long long 都是带符号的,在前添加unsigned为无符号类型,unsigned int可缩写为unsigned

  3. 字符型分为三种:char、signed char、unsigned charchar有无符号由编译器决定。

  4. float 为单精度浮点型,有效数字为6~7位;double 为双精度,有效数字为15~16; 但他们在输出时,小数点后都有6位小数。
    float 有效位的解释:从左往右数,前6位一定是有效的(精确),所以精确度是6位。意思是前6位一定精确,6位以后的可能精确,可能不精确。

  5. 如何选择类型的几点注意:

    • 当明确知道述职不可能为负时,用unsigned
    • intlong尺寸相同,所以超出int范围时,用long long
    • char由于机器不同所表现的类型不同,容易出问题,所以尽量明确指定是signed char或者unsigned char
    • 执行浮点数运算选用doublefloat经常精度不够并且与double的计算代价相差无几,但long double的消耗很大。
  6. 当给无符号类型一个超出范围的值时,结果是对该值对无符号数值总数取模后的余数。例如

    unsigned char c = -1//c=255;

    数学角度
    -1对256求模mod(-1,256)
    取模运算时,对于负数,应该加上被除数的整数倍,使结果大于或等于0之后,再进行运算.
    也就是: (1)%256=(1+256)%256=255%256=255 ( − 1 ) % 256 = ( − 1 + 256 ) % 256 = 255 % 256 = 255

    计算机角度
    计算机中负数是以补码形式存储的,负数的补码是对应正数的原码取反加1得到,-1的补码11111111,转换成无符号数即是255的二进制编码。
    注释:通常,取模运算也叫取余运算,它们返回结果都是余数.rem(取余)和mod(取模)唯一的区别在于: 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。取余运算在取商的值时,向0 方向舍入(fix()函数);而取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。

  7. 当一个算数表达式中既有无符号数又有有符号数(如int)值时,那个int值就会转化为无符号型。例如:

    unsigned a=10;
    int b=-1;

    a+b的值是-1转化为unsigned值后再加上10.

  8. 字面值常量
    整形字面值:20十进制 020八进制 0x2 十六进制
    默认情况下,十进制是带符号数,八进制和十六进制即可能是带符号的,也可能是无符号的。类型short没有对应的字面值。
    严格来说,十进制字面值不会是负数。-10的负号并不在字面值之内,是对字面值取负值。
    默认的,浮点型字面值是double。

    a //字符字面值  char
    “abcdef”  //字符串字面值   以空字符‘\0’结尾,实际长度比内容多1.
    truefalse  //布尔字面值
    nullptr   //指针字面值
  9. 变量 提供一个具名的、可供程序操作的存储空间。变量和对象一般可以互换使用。

    string是一种库类型,表示一个可变长的字符序列 string book(“0-201-78-X”);

  10. 初始化不是赋值,初始化是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除而以一个新值来替代。初始化方式有以下四种:

    int a=0;
    int a={
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值