C++ Primer ch1-ch2笔记

本文深入探讨C++中的关键概念,包括endl操纵符的作用、命名空间的作用域运算符、类与成员函数、算术表达式中无符号数的处理、对象的初始化与赋值的区别、引用与指针的细节、C++11新增特性如auto和decltype的使用等。

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

ch1
1,
endl 操纵符
写入endl的效果是结束当前行,并将与设备关联的缓冲区(buffer)中的内容刷到设备中。


2,
命名空间 namespace
作用域运算符 ::

作用域运算符可以用来显式访问全局变量:(但在块内外使用同样名字的变量不被建议)
如:

int val = 0;
int main()
{
int val = 1;
cout << val << endl;
cout << ::val << endl;
return 0;
}

执行结果将是:
1
0


3,
类(class)的概念:
一种用于自己的数据结构及其相关操作的机制。
成员函数:
class.(member function)

 

ch2
1,
当一个算术表达式中既有无符号数又有int值时,那个int值就会转换为无符号数。
如:

unsigned u = 10;
int i = -42;
cout << i + u << endl;// 如果int占32位,输出429467264

另外,当从无符号数中减去一个数时,不管这个值是不是无符号数,
我们都必须确保结果不能是一个负值。
如:

unsigned u = 10,i = 42;
cout << u - i << endl;// 输出32

 

2,
对象(Object),通常情况下,是指一块能存储数据并具有某种类型的内存空间。

3,
初始化与赋值的区分:
初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把
对象的当前值擦除,而以一个新值来替代。


4,
初始化有好几种不同形式:

int val = 0;
int val = {0};
int val{0};
int val(0);

作为C++11标准的一部分,用花括号来初始化变量得到了全面应用,这种初始化的形式被
称为列表初始化。当用于内置类型的变量时,这种初始化形式有一个重要特点:如果我们
使用列表初始化且初始值存在丢失信息的风险,编译器将会报错:

double val = 3.141592;
int a{val},b = {val}; // 错误:存在丢失信息的风险
int c(val),d = val; // 正确,转换执行,但确实丢失了部分信息

 

5,
变量声明和定义的关系
定义:初次创建;声明:从别处摘用(自己的理解)
如:

extern int i; // 声明i而没有定义
int j; // 声明并定义j

我们能给由extern关键字标记的变量赋一个初始值,但是这么做也就抵消了extern的作用:

extern double pi = 3.141592;// 定义

在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。


6,
引用(reference)为对象起了另外一个名字,引用类型引用另外一种类型。
通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名:

int ival = 1024;
int &referval = ival;

引用必须被初始化。

指向指针的引用:

int val = 1;
int *pt = &val;
int *&r = pt;

7,
顶层const表示指针本身是个常量
底层const表示指针指向的对象是一个常量

const int *p = NULL; // 底层const
int *const p = NULL; // 顶层const

8,
C++11 using:

typedef int shit;

相当于

using shit = int;

9,
C++11 auto:
让编译器替我们去分析表达式所属的类型:

auto item = val1 + val2;
auto sz = 0,pi =3.14; // 错误:一条语句中所有变量的初始基本类型都必须一样。

10,
C++11 decltype:
从表达式的类型推断出要定义的变量的类型:

int val = 1;
decltype(val + 1.5) res = val + 1.5;//分析val+1.5的值并将res声明为其类型
cout << res << endl;

转载于:https://www.cnblogs.com/ray-coding-in-rays/p/6295015.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值