c++备忘
- C++通过引进四个新的类型转换操作符克服了C风格类型转换的缺点,这四个操作符是, static_cast, const_cast, dynamic_cast, 和reinterpret_cast。例如,假设你想把一个int转换成double,以便让包含int类型变量的表达式产生出浮点数值的结果。如果用C风格的类型转换,你能这样写:
int firstNumber, secondNumber;
double result = ((double)firstNumber)/secondNumber;
如果用上述新的类型转换方法,你应该这样写:
double result = static_cast <double> (firstNumber)/secondNumber; - 函数参数的传递分为值传递和引用传递,引用时一种特殊类型的变量,可以认为是变量的另一个别名,声明一个引用时必须对它初始化,一旦引用被初始化后,就不能在指向其他对象了。例如,int i,j; int &r = i; j = 10 ; r = j; // 相当于i=j;
- 内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入到每一个调用处,这样就节省了参数传递、控制转移等开销。例如,inline double cal(){}
- C语言只有结构体而没有类,C语言的结构体只允许定义数据成员,不允许定义函数成员,而且C语言没有访问控制属性的概念,结构体的全部数据成员是公有的。C++为C语言的结构体引入了成员函数、访问权限控制、继承、包含多态等面向对象的特性。C++把class作为定义抽象数据类型的首选关键字,并保留struct关键字。
- C语言中用指针作为函数参数,可以在减少函数调用数据时的开销的前提下共享数据。在C++中已经可以通过引用来实现了,使用引用可以是程序的可读性更好些。
来判断调用一个函数是否成功。scanf("%d %d",&a,&b)返回输入的数据和格式字符串中匹配次数,当dos或windows中输入ctrl+z(模拟文件结束符EOF)时,scanf
返回EOF 所以当输入终止符ctrl+z时,退出while循环。