C++ bool、string、增强的范围for、函数参数默认值、函数重载

发布时间:2024年01月15日

目录

bool

string?

增强的范围for

函数参数默认值

函数重载


bool

C++关键字用于描述 布尔类型

bool temp = true;
temp = false

输出时以 1:true 0:false?


string?

C++ 字符串类型

头文件 #include <string>

string str;
str = "qwer";
cout << str << endl;
str[1] = 'W';
cout << str << endl;

字符串比较? : 通过 == 、!= 、> 、<判断

string strnew = "qWer";
if (strnew == str)
{
	cout << "strnew == str" << endl;
}
else
{
	cout << "strnew != str" << endl;
}

字符串拼接? : 通过 + 、+= 进行拼接

string strneww = strnew + str + p + strarr;
cout << strneww << endl;   //qWerqWerqwer1234

字符串截取? : substr(开始下标,截取长度) ?

开始下标超限则报错 ? 截取长度超限仅截取有效长度

cout << strneww.substr(4, 10) << endl;;  //qWerqwer12
cout << strneww.substr(4, 100) << endl;  //qWerqwer1234

字符串长度

cout << strneww.size() << "  " << strneww.length() << endl; //16  16

c_str() : string 转换为 const char*?

cout << strcmp(strneww.c_str(), strarr) << endl;


增强的范围for

遍历int数组

int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
for (int v : arr)
{
	cout << v << "  ";
}
cout << endl;

遍历string

string str = "1234567890";
for (char v : str)
{
	cout << v<<"  ";
}
cout << endl;

不可遍历new的 数组? (未知数组大小)


函数参数默认值

传递实参则默认值失效? ? ?

未传递实参则使用默认值

单个参数

void fun1(int a=10)
{
	cout << a << endl;
}

fun1(); //fun1  10   
fun1(20);  //fun1  20

多个参数

多参数指定默认值规则:从右向左依次指定,中间不可间断

void fun2(int a, int b=20, int c=30)
{
	cout << a << "  " << b << "  " << c << "  " << endl;
}

fun2(100); //100  20  30
fun2(100, 200);  //100  200  30
fun2(100, 200, 300); //100  200  300

只在声明处指定默认值

void fun3(int a = 10);

void fun3(int a)
{
	cout << a << endl;
}

fun3();  //10

只在定义处指定默认值

void fun4(int a);

void fun4(int a = 20)
{
	cout << a << endl;
}

fun4();  //error C2660: “fun4”: 函数不接受 0 个参数

在同一作用域下:声明和定义处皆指定默认值

void fun5(int a = 30);

void fun5(int a = 30)
{
	cout << a << endl;
}

fun5();  //error C2572: “fun5”: 重定义默认参数 : 参数 1

多次声明指定默认值,以局部为准

void fun6(int a = 40);

void fun6(int a)
{
	cout << a << endl;
}

fun6();  //40
void fun6(int a = 50);
fun6();  //50


函数重载

在同一作用域下,函数名相同,参数列表不同(参数类型,数量),返回类型是否相同不做要求

描述多个函数之间的关系

int add(int a, int b)
{
	return a + b;
}
double add(double a, double b)
{
	return a + b;
}
int add(int a, int b, int c)
{
	return a + b + c;
}
int main()
{
	cout << add(10, 20) << endl;  //30
	cout << add(10.5, 20.5) << endl;  //31
	cout << add(10, 20, 30) << endl;  //60

	return 0;
}

函数重载

void fun1() { cout << "fun1()" << endl; }
void fun1(int a = 0) { cout << "fun1(int a)" << endl; }

fun1(10);
void fun1();
fun1();
{
	void fun1(int a = 0);
	fun1();
}

非函数重载

非函数重载:error C2084: 函数“void fun2(int)”已有主体
void fun2(int a) { cout << "fun2(int a)" << endl; }
void fun2(const int a) { cout << "fun2(const int a)" << endl; }

函数重载

void fun2(int* a) { cout << "fun2(int* a)" << endl; }
void fun2(const int* a) { cout << "fun2(const int* a" << endl; }

非函数重载

非函数重载,重定义:error C2084: 函数“void fun3(int [])”已有主体
void fun3(int arr[]) { cout << "fun3(int arr[]" << endl; }
void fun3(int* arr) { cout << "fun3(int arr[]" << endl; }
文章来源:https://blog.csdn.net/qq_43219334/article/details/135582881
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。