C++期末复习超详细总结知识点,字节java面试题

}

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;

}

5.8、重载运算符规则


C++中有以下五个运算符不能重载

| 成员访问运算符 | 成员指针访问运算符 | 域运算符 | 长度运算符 | 条件运算符 |

| — | — | — | — | — |

| . | .* | :: | sizeof | ?: |

重载运算符规则

  1. 重载不能改变运算符运算对象(即操作数)的个数

  2. 重载不能改变运算符的优先级别

  3. 重载不能改变运算符的结合性

  4. 运算符重载函数可以是类的成员函数,也可以是类的友元函数,还可以是既非类的成员函数也不是友元函数的普通函数


什么时候应该用成员函数方式,什么时候应该用友元函数方式?二者有何区别呢?()

  • 一般将单目运算符重载为成员函数,将双目运算符(二元运算符)重载为友元函数

  • 重载为类的成员函数 - operator 函数有一个参数

  • 重载为类的友元函数 - operator 函数有两个参数

  • 只能将重载 “>>” (流插入运算符)和“<<” (流提取运算符)的函数作为友元函数或者普通函数重载,而不能将它们定义为成员函数,因为参数为两个

  • 类型转换运算符只能作为成员函数重载

单目运算符:只有一个操作数,如 !,-(负号),&,*,++,–

双目运算符:*,/,%,+,-,==,!=,<,>,<=,>=,&&,||

5.9、内联函数


  • 指定内置函数的方法很简单,只需在函数首行的左端加一个关键字inline即可。

inline int max(int a,int b);

  • 使用内置函数可以节省运行时间

  • 只有那些规模较小而又被频繁调用的简单函数,才适合于声明为inline函数。

5.10、函数模板


语法:

template

函数声明或定义

解释:

template — 声明创建模板

typename — 表面其后面的符号是一种数据类型,可以用class代替

T — 通用的数据类型,名称可以替换,通常为大写字母

只适用于函数体相同、函数的参数个数相同而类型不同的情况,如果参数的个数不同,则不能用函数模板。

6、指针

======================================================================

指针的作用: 可以通过指针间接访问内存

6.1、指针变量


指针变量定义语法: 数据类型 * 变量名;

  • 请看下方代码示例,理解指针变量的定义与使用,期末一般不会出太难指针的题,但是基本用法一定要会!!

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个字节(了解)

6.2、const修饰指针


const修饰指针有三种情况

  1. const修饰指针 — 常量指针

  2. const修饰常量 — 指针常量

  3. 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右侧紧跟着的是指针还是常量, 是指针就是常量指针,是常量就是指针常量

6.3、指针和数组


作用:利用指针访问数组中元素

  • 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;

}

6.4、指针和函数


作用:利用指针作函数参数,可以修改实参的值(地址传递

//值传递

void swap1(int a ,int

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值