#define _CRT_SECURE_NO_WARNINGS//避免我们在编译老的用C语言的开源项目如lua源包的时候,可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数,而报警告和错误,而导致无法编译通过。
#include //标准输入输出函数
#include //数学函数库
#include //字符串处理函数
#include //动态存储分配函数头文件
#include //C++标准输入输出流头文件
#include //文件输出流
#include //分配拓展的数组
以#if开头以#endif结尾就构成一个条件编译
如果这个是0表示这里面的就跳过(不编译)
std::cout << " 标准名字空间 " << std::endl;
Endl 相当于换行符
using std::count;
using std::endl;
using namespace std;
输入:
输出:
#include
#include
#include
using namespace std;
int main() {
ofstream oF("test.txt");
oF << 666 << " " << "hello C++\n";
oF.close();
ifstream iF("test.txt");
double d;
string str;
iF >> d >> str;
cout<<d <<" "<< str<<endl;
return 0;
}
引用变量.
int a =3;
int &r=a;
int &er=a;
int&r=b;
double d;
int&r=d;
int a =3, &r=a;
cout<<a<< '\t' < <endl;
r=5;
cout<<a<< '\t' < <endl;
函数的值形参
C函数的形参 都是值参数,形参作为函数的局部变量有自 己单独的内存块,当函数调用时,实参将值拷贝(赋值给)形参。对形参的修改不会影响实参。
#include
using namespace std;
int main() {
int a = 3, &t = a;
cout << a << '\t' << t << endl;
t = 5;
cout << a << '\t' << t << endl;
return 0;
}
#include
using namespace std;
void swap(int x, int y) {
cout << x << '\t' << y << endl;
int t = x;
x = y;
y = t;
cout << x << '\t' << y << endl;
}
int main() {
int a = 3, b = 4;
cout << a << '\t' << b << endl;
swap(a, b);
cout << a << '\t' << b << endl;
}
void swap(int *x, int *y) {
int t = *x;
*x = *y;
*y = t;
}
#include
using namespace std;
int main() {
int a = 3, b = 4;
cout << a << '\t' << b << endl;
swap(&a, &b);//以地址的方式传入
cout << a << '\t' << b << endl;
}
//x和y作为引用变量
void swap(int &x, int &y) {
int t = x;
x = y;
y = t;
}
#include
using namespace std;
int main() {
int a = 3, b = 4;
cout << a << '\t' << b << endl;
swap(a, b);
cout << a << '\t' << b << endl;
}
函数的形参可以有默认值。
void print(char ch, int n =1);
●默认形参必须在非默认形参右边,即一律靠右
add(x=1,y, z=3); //false
add(y, x=1,z=3); //true
看两个例子:
#include
using namespace std;
void print(char ch, int n = 1) {
for (int i = 0; i < n; i++)
cout << ch;
}
int main() {
print('*'); cout << endl;//n没传值,就用默认值n=1
print('*',3); cout << endl;//n有传值,就用已传的值3
print('*',5); cout << endl;//n有传值,就用已传的值5
}
#include
using namespace std;
int add(int x,int y=2,int z=3) {
return x + y + z;
}
int main() {
cout << add(5)<<endl;//传了一个值,赋值给了x
cout << add(5,7) << endl;//传了两个值,赋值给了x,y
cout << add(5,7,9) << endl;//传了三个值,赋值给了x,y,z
}
●C+ +允许同意作用域里有同名的函数,只要它们的形参不同。如:
int add(int X, int y);
double add(double x, double y);
●函数名和形参列表构造了函数的签名。
●函数重载不能根据返回类型区分函数。如
int add(int X, int y);
double add(int X, int y);
#include
using namespace std;
int add(int x, int y = 2) {
return x + y ;
}
double add(double x, double y = 2.0) {
return x + y;
}
int main() {
cout << add(5,3) << endl;
cout << add(5.3, 7.8) << endl;
//这里不知道会调用int类型的add方法还是double类型的add方法所以会报错
//cout << add(5, 7.8) << endl;
cout << add((double)5, 7.8) << endl;//当然这里也可以为int类型
}
int add(int x,int y) {
return x + y;
}
double add (double x,double y ) {
return x + y;
}
template<typename T>
T add(Tx, Ty) {
return x + y;
}
#include
using namespace std;
int add(int x, int y) {
return x + y;
}
double add(double x, double y ) {
return x + y;
}
int main() {
cout << add(5, 3) << endl;
cout << add(5.3, 7.8) << endl;
}
cout << add(5,3) << endl;
cout << add(5.3,7.8) << endl;
#include
#include
using namespace std;
template<typename T>
T add(T x, T y) {
return x + y;
}
int main() {
cout << add(5, 3) << endl;
cout << add(5.3, 7.8) << endl;
cout << add((double)5, 7.8) << endl; //同理,这里也要绑定类型,不然会有歧义性
}
#include
#include
using namespace std;
template<typename T>
T add(T x, T y) {
return x + y;
}
int main() {
cout << add<int>(5, 3) << endl;
cout << add<double>(5.3, 7.8) << endl;
cout << add<int>(4, 6) << endl;
cout << add<string>("hello", "world") << endl;
}
string s = "hello", s2("world");
cout << s.size() << endl;
string s3 = s.substr(1,3);
cout << s3 << endl;
#include
#include
using namespace std;
int main() {
string s = "hello", s2("world");
//访问运算符.
cout << s.size() << endl;
string s3 = s.substr(1, 3);
cout << s3<< endl;
string s4 = s + " " + s2;
cout << s4 << endl; //"hello world"
s4[0] = 'H';
s4[6] = 'V';
cout << s4 << endl;//Hello Vorld
int pos = s4.find("rld");//8
cout << pos << endl;
s4.insert(3, "AAAA");
cout << s4 << endl;
for (int i = 0; i < s4.size(); i++)
cout << s4[i] << "-";
cout << "\n";
}
#include
#include
using namespace std;
int main() {
vector<int> v = { 7, 5, 16, 8 };
//push_back(),最后添加一个元素
v.push_back(25);
v.push_back(13);
//成员函数size()、下标运算符[]
for (int i = 0; i < v.size(); i++)
cout << v[i] << '\t';
cout << '\n';
//pop_back(),去除最后一个元素
v.pop_back();
for (int i = 0; i < v.size(); i++)
cout << v[i] << '\t';
cout << '\n';
v.resize(2);
for (int i = 0; i < v.size(); i++)
cout << v[i] << '\t';
cout << '\n';
}