《写给大家看的C++书》笔记

1、cin对象在读入一个字符时将忽略空格,所以敲入<空格>Y<回车>与只敲入Y<回车>的效果是一样的。如果你想读入任意一个字符,包括各种空白字符在内,请使用cin对象的get()函数:

char myChar;
std::cin.get(myChar);


 2、读入一整行输入,可以使用getline()函数,在调用它时,需要给出输入流的名字“cin”作为第一个参数,用来保存输入值的变量是第二个输入参数。

代码如下:

std::string input;
std::getline(std::cin,input);

tips:

(1)在默认情况下,getline()函数在遇到换行符时将停止读取输入,所以必须保证在调用它之前缓冲区里没有任何多余的输入,比如你先读取一个整数,再读取一整行文本,用户可能输入54后按下回车键,在把54赋值给一个整数变量后,那个回车符还在缓冲区里,这将使得下一个getline()调用立刻停止读取输入。

(2)getline()函数将丢弃作为文本行结束标记的换行符,所以换行符不可能成为获得输入值的那个字符串的一部分。

(3)getline()函数还有一个可选的第3个参数,用来定义一个停止字符。


3、给函数的输入参数设置默认值

在定义个人函数的时候,可以给该函数的各个输入参数分别设置一个默认值。给某个输入参数设置一个默认值的好处是可以让那个参数成为可选的。具体做法是在函数原型里(不是在函数的定义里)用赋值操作符把一个值赋值给那个输入参数。

void fn(int n1, int n2=6);
在定义自己的函数时,可以给任意多个输入参数设置默认值,但是有一点必须注意:必须把所有的必选参数放在可选参数之前,比如:

void fn(int n1,int n2 = 6,in n3 = 4);

4、内联函数

内联函数不需要先为它定义一个原型,整个函数都在main()函数的前面定义。

如果某个函数被编译器当做内联函数来处理,最直接的效果是这个函数的调用将被替换为实际的函数代码,就像那些代码是写在main()函数里一样。

其实现在的编译器在编译代码的时候,它会自动判断是否要将一个函数当做内联函数来处理,而不管这个函数是否定义为内联函数,所以,换句话说,即使使用了inline关键字,函数也不一定肯定就被当做一个内联函数来对待。

5、函数内部的静态变量和非静态变量的区别:

它们的值在程序的生命周期内即使经历多次函数调用也不会被自动重置。


6、C++允许在类里声明常量,但不允许对它进行赋值。


7、构造器(构造函数)

构造函数的名字和它所在的类的名字一样。

系统会在创建出某个类的一个新实例之后,立刻自动调用这个类的构造器。

构造函数永远不会有返回值。


8、析构器也像构造器那样永远不返回任何值,这两种方法的区别之一就是析构器不带输入参数,简单的说,就是析构器的声明永远是下面这种形式:

~ClassName();


9、this指针

在类里,this指针代表当前对象,this指针的基本用途是避免二义性,尤其是在引用变量和属性的时候。

你可能感兴趣的:(《写给大家看的C++书》笔记)