}
void func(double a ,int b)
{
cout << “func (double a ,int b)的调用!” << endl;
}
//函数返回值不可以作为函数重载条件
//int func(double a, int b)
//{
// cout << “func (double a ,int b)的调用!” << endl;
//}
int main() {
func();
func(10);
func(3.14);
func(10,3.14);
func(3.14 , 10);
system(“pause”);
return 0;
}
C++中有以下五个运算符不能重载
| 成员访问运算符 | 成员指针访问运算符 | 域运算符 | 长度运算符 | 条件运算符 |
| — | — | — | — | — |
| . | .* | :: | sizeof | ?: |
重载运算符规则:
-
重载不能改变运算符运算对象(即操作数)的个数
-
重载不能改变运算符的优先级别
-
重载不能改变运算符的结合性
-
运算符重载函数可以是类的成员函数,也可以是类的友元函数,还可以是既非类的成员函数也不是友元函数的普通函数
什么时候应该用成员函数方式,什么时候应该用友元函数方式?二者有何区别呢?()
-
一般将单目运算符重载为成员函数,将双目运算符(二元运算符)重载为友元函数
-
重载为类的成员函数 -
operator
函数有一个参数 -
重载为类的友元函数 -
operator
函数有两个参数 -
只能将重载
“>>”
(流插入运算符)和“<<”
(流提取运算符)的函数作为友元函数或者普通函数重载,而不能将它们定义为成员函数,因为参数为两个 -
类型转换运算符只能作为成员函数重载
单目运算符:只有一个操作数,如 !,-(负号),&,*,++,–
双目运算符:*,/,%,+,-,==,!=,<,>,<=,>=,&&,||
- 指定内置函数的方法很简单,只需在函数首行的左端加一个关键字inline即可。
inline int max(int a,int b);
-
使用内置函数可以节省运行时间
-
只有那些规模较小而又被频繁调用的简单函数,才适合于声明为inline函数。
语法:
template
函数声明或定义
解释:
template — 声明创建模板
typename — 表面其后面的符号是一种数据类型,可以用class代替
T — 通用的数据类型,名称可以替换,通常为大写字母
只适用于函数体相同、函数的参数个数相同而类型不同的情况,如果参数的个数不同,则不能用函数模板。
======================================================================
指针的作用: 可以通过指针间接访问内存
指针变量定义语法: 数据类型 * 变量名;
- 请看下方代码示例,理解指针变量的定义与使用,期末一般不会出太难指针的题,但是基本用法一定要会!!
int main() {
//1、指针的定义
int a = 10; //定义整型变量a
//指针定义语法: 数据类型 * 变量名 ;
int * p;
//指针变量赋值
p = &a; //指针指向变量a的地址
cout << &a << endl; //打印数据a的地址
cout << p << endl; //打印指针变量p
//0073F8BC
//0073F8BC
//2、指针的使用
//通过*操作指针变量指向的内存
cout << "*p = " << *p << endl;
// *p = 10
system(“pause”);
return 0;
}
指针变量和普通变量的区别
-
普通变量存放的是数据,指针变量存放的是地址
-
指针变量可以通过" * "操作符,操作指针变量指向的内存空间,这个过程称为解引用
总结1: 我们可以通过 & 符号 获取变量的地址
总结2:利用指针可以记录地址
总结3:对指针变量解引用,可以操作指针指向的内存
总结4:所有指针类型在32位操作系统下是4个字节(了解)
const修饰指针有三种情况
-
const修饰指针 — 常量指针
-
const修饰常量 — 指针常量
-
const既修饰指针,又修饰常量
int main() {
int a = 10;
int b = 10;
//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
const int * p1 = &a;
p1 = &b; //正确
//*p1 = 100; 报错
//const修饰的是常量,指针指向不可以改,指针指向的值可以更改
int * const p2 = &a;
//p2 = &b; //错误
*p2 = 100; //正确
//const既修饰指针又修饰常量
const int * const p3 = &a;
//p3 = &b; //错误
//*p3 = 100; //错误
system(“pause”);
return 0;
}
技巧:看const右侧紧跟着的是指针还是常量, 是指针就是常量指针,是常量就是指针常量
作用:利用指针访问数组中元素
-
C++规定,数组名就是数组的起始地址
-
数组的指针就是数组的起始地址
-
数组名可以作函数的实参和形参,传递的是数组的地址
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int * p = arr; //指向数组的指针
cout << "第一个元素: " << arr[0] << endl; //1
cout << "指针访问第一个元素: " << *p << endl; //1
for (int i = 0; i < 10; i++)
{
//利用指针遍历数组
cout << *p << endl;
p++;
}
system(“pause”);
return 0;
}
作用:利用指针作函数参数,可以修改实参的值(地址传递)
//值传递
void swap1(int a ,int