ofstrem和istream的区别

ofstrem和istream的区别

ofstream文件写操作,是从内存到硬盘 ios::out 写文件

ifstream文件读操作,是从硬盘到内存 ios::in 读文件

fstream读写操作,对打开的文件进行读写操作

如果想要以输入方式打开,就用Ifstream

如果想要以输出方式打开,就用ofstream

如果想以输入/输出方式打开,就用fstream

泛型编程STL

函数模板

类模板

For循环内部定义的变量,每次循环都被重新定义

函数需要传入的参数是 引用 ,调用函数时传入地址(&a)或者传入指针变量都会报错。只能传入变量本身的名字

函数需要传入的参数是 指针 ,调用函数时传入地址(&a)或者传入指针变量都是正确的。

当形参类型为引用时,实参和形参共享一个地址,对形参的修改也就是对实参的修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void test01(int& n)
{
n = 10;
}
void test02(int *pn)
{
*pn = 10;
}
int main()
{
int a = 100;
int b = 1000;
int* pa = &b;

test01(a);

//test01(pa);//无法将参数从int *转换为 int &
//test01(&a);//无法将参数从int *转换为 int &

test02(pa);
test02(&a);
return 0;
}

当一个int&参数传入swap函数的时候,同样地,该int&参数会被当作一个int型变量,然后形参就是这个变量的引用。所以在这种情况下传入int或int&的输出都是一样的

不要将函数定义(内联函数除外)或者变量申明放在头文件中,否则头文件包含一个函数定义,然后在其他两个文件中包含该头文件,同一个程序中将包含同一个函数的两个定义,将会出错。

将结构放在头文件中是可以的。因为它们不创建的对象,知识在源代码文件中声明结构变量时,告诉编译器如何创建该结构变量

1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
int a = 10;//作用域为整个main()函数
{
int b = 10;//作用域为{}内部
cout << b << endl;//正确
}
cout << a << endl;
//cout << b << endl;//未定义
int b = 100;//正确,上一个int b的作用域只在上一个{}代码块中,可以再定义一个b
return 0;
}