mirror of
https://github.com/beyondx/Notes.git
synced 2026-02-11 22:36:18 +08:00
34 lines
2.6 KiB
Plaintext
34 lines
2.6 KiB
Plaintext
Content-Type: text/x-zim-wiki
|
||
Wiki-Format: zim 0.4
|
||
Creation-Date: 2011-08-07T10:08:42+08:00
|
||
|
||
====== c++备忘 ======
|
||
Created Sunday 07 August 2011
|
||
|
||
===== 1. =====
|
||
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;
|
||
|
||
===== 2. =====
|
||
函数参数的传递分为值传递和引用传递,引用时一种特殊类型的变量,可以认为是变量的另一个别名,__声明一个引用时必须对它初始化,一旦引用被初始化后,就不能在指向其他对象了__。例如,int i,j; int &r = i; j = 10 ; r = j; // 相当于i=j;
|
||
|
||
|
||
===== 3. =====
|
||
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入到每一个调用处,这样就节省了参数传递、控制转移等开销。例如,inline double cal(){}
|
||
|
||
===== 4. =====
|
||
C语言只有结构体而没有类,C语言的结构体只允许定义数据成员,不允许定义函数成员,而且C语言没有访问控制属性的概念,结构体的全部数据成员是公有的。C++为C语言的结构体引入了成员函数、访问权限控制、继承、包含多态等面向对象的特性。C++把class作为定义抽象数据类型的首选关键字,并保留struct关键字。
|
||
|
||
|
||
===== 5. =====
|
||
C语言中用指针作为函数参数,可以在减少函数调用数据时的开销的前提下共享数据。在C++中已经可以通过引用来实现了,使用引用可以是程序的可读性更好些。
|
||
|
||
===== 6. =====
|
||
在C语言中可以用#define来定义带参数宏,以实现简单的函数计算,提高程序的运行效率,但是在C++中这一功能已内联函数所取代。
|
||
scanf("%d%d",&a,&b)==2;scanf("%d%d",&a,&b)!=EOF;C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被
|
||
来判断调用一个函数是否成功。scanf("%d %d",&a,&b)返回输入的数据和格式字符串中匹配次数,当dos或windows中输入ctrl+z(模拟文件结束符EOF)时,scanf
|
||
返回EOF 所以当输入终止符ctrl+z时,退出while循环。
|