C++学习笔记2

这篇文章主要是对C++Primer(5th edition)开头部分(第一章、第二章)一些有意思的内容的探讨。

1.c++的注释/**/遵守“最近配对”的规则,C++ Primer(5th edition)上有一个蛮有意思的例子:

#include<iostream>
using namespace std;
int main(){
	cout<<"/*"<<endl;
	cout<<"*/"<<endl;
	cout<</*"*/"*/<<endl;
	cout<</*"*/"/*"/*"*/<<endl; 
} 


可以说明这个问题,其中第六行是错的。


2.for 循环和while循环没有本质区别,效率上也没有孰优孰劣。

3.endl不只是换行那么简单,它还可以刷新buffer(数据缓冲区),这样就能保证写入流中的数据可以全部输出,相比之下,\n只能换行,不能刷新缓冲区。

4.申明和定义不是一回事。例如:
extern int a;//declaration
int a;//defination
在函数内部对被extern标记的变量赋值会导致错误。

5.变量的作用域(scope)也遵守最近配对的规则。

6.引用不是对象!所以没有“引用的引用”这种说法。(所谓对象指的是类的实体)

7.指针和引用的基本区别在于:指针本身是一个对象,在其生命周期内允许指向其他值;申明指针可以不初始化(虽然很不安全!),但引用必须要初始化。

8.C++11引入了nullptr,那么nullptr,NULL,0有什么区别?
答:C++03对0做了特殊规定:0既可以表示整数,又可以表示空指针常量(null pointer constant),这种二义性会带来一些问题(比如函数重载)。而NULL其实是宏定义的void *指针,C++禁止了void *指针向其他类型的隐式转换,所以NULL其实是宏定义的0。nullptr是C++11为了填这些坑引入的,用来表示“不指向任何对象的指针”,这样void *就可以被理解成“指向未知类型的指针”,而0就是0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值