只能用pointer而不可以用reference的情况
#include <iostream>
using namespace std;
#include <vector>
//只能用pointer而不可以用reference的情况(比如只想操作但是打印看自己意愿)
#if 1
void Create0(vector<int> &a, ostream *os = 0)
{
for (int i = 0; i < a.size(); i++)
{
a[i] = 0;
if (os)
{
*(os) << a[i] << ' ';
}
}
}
#endif
int main()
{
int a[] = { 1,4,23,5,23,5,76,3 };
vector<int> nums(a, a + 8);
//Create0(nums); //只操作,不打印
Create0(nums, &cout); //操作,也打印
system("pause");
return 0;
}
用reference的情况
#include <iostream>
using namespace std;
#include <vector>
#include <fstream>
//#include "Display.h"
void Display(const vector<int> &nums, ostream &out = cout)//可以用指针也可以用引用,这里用引用
{
for (int i = 0; i < nums.size(); i++)
{
out << nums[i] << ' '; //如果是用指针需要使用提领操作并且检验指针是否为空
}
}
int main()
{
int a[] = { 1,4,23,5,23,5,76,3 };
vector<int> nums(a, a + 8);
//Display(nums); //打印到控制台
ofstream OutFile("hmj.txt");
Display(nums, OutFile); //打印到文件 如果用指针OutFile要取地址
system("pause");
return 0;
}
用reference的情况(用头文件方式)
-
Display.h文件
#pragma once #include <iostream> using namespace std; #include <vector> void Display(const vector<int>&, ostream& = cout); //在头文件可以省略名称 这里可以用指针也可以用引用
-
Display.cpp文件
#include "Display.h" void Display(const vector<int> &nums, ostream &out) { for (int i = 0; i < nums.size(); i++) { out << nums[i] << ' '; } }
-
main.cpp文件
#include <iostream> using namespace std; #include <vector> #include <fstream> #include "Display.h" int main() { int a[] = { 1,4,23,5,23,5,76,3 }; vector<int> nums(a, a + 8); //Display(nums); //打印到控制台 //打印到文件 如果用指针OutFile要取地址 ofstream OutFile("hmj.txt"); Display(nums, OutFile); system("pause"); return 0; }
今天是20200302 学到了不少呀!