C++课堂笔记(第三讲)

inline:修饰的函数为内联函数/内嵌函数

空间(内存)与时间(编译时间和运行时间)问题:
以时间换空间:消耗了更多编译/运行时间,换取占用更少的内存
以空间换时间:占用更多的内存空间,换取运行时间

以时间换空间举例:宏函数

#define MAX(a,b) a>b?a:b

int max(int a,int b)
{
	return a+b;
}
int max_i MAX(6,5);

宏函数的处理阶段:预处理阶段
宏函数的处理过程:傻瓜式替换(没有空间分配过程) 不做语法检查!! 导致不安全

自定函数的处理阶段:编译时检查语法、运行时函数进行栈进栈出
自定函数的处理过程:铜鼓哦函数名找到函数的入口地址;给形参分配空间;传值:执行函数体里的语句;函数返回;释放空间。

以空间换时间举例:inline(内敛函数)

int add(int a, int b)
{
	return a+b;
}
//改变了函数调用的处理过程!!(将函数体里的语句内嵌到函数的调用地方!!)
inline int add(int a, int b)
{
	return a+b;
}

inline在C++中的升级:
inline是由编译决定,使用inline关键字只是申请编译器;(编译器决定是否内敛处理)

限制:
1 内联函数中不可含有循环;
2 内联函数中不可能含有静态变量;
3 内联函数不可为递归函数;
4 内联函数中不可含有错误处理

注意事项:内联函数的定义必须出现在内联函数第一次调用之前;

默认参数:C++中可以在函数声明时为参数提供一个默认值,
当函数调用时没有指定这个参数的值,编译器会自动用默认值代替

注意事项:如果一个参数为默认参数,那么它右边的所有参数必须为默认参数

函数的参数占位符:预留函数接口

函数重载:解决函数命名的可读性问题!!

概念:用同一个函数名定义不同的函数
当函数名和不同的参数搭配时函数的含义不同

函数重载至少满足下面的一个条件

  •  参数个数不同
    
  •  参数类型不同
    
  •  参数顺序不同
    

(函数返回值不能作为重载条件)
注意事项:默认参数可能会影响函数重载,编译器不知道如何选择,从而产生二义性问题。

struct的加强
升级一:不需要加struct,直接用结构体名来定义变量
c中:

struct Student
{
	char name[20];
	int age;
}

struct Student stu = {"wang",10};

c++中:

struct Student
{
	char name[20];
	int age;
}

Student stu = {"wang",10};

升级二:可以保留变量和函数

升级三:用class(类)替换struct(结构体)

升级四:引入了访问权限修饰符 :
public(可以在结构体或类外访问)
protected(只允许结构体或类内访问)
private(只允许结构体或类内访问)

在struct定义类时,所有成员默认属性为public
在用class定义类时,所有成员的默认属性为private

在类里:变量 被称为成员变量 或 属性
函数 被称为成员函数 或 成员方法

类就是一个结构体
对象:结构体定义的一个变量

class VS struct

区别一:命名不同(对象、变量)(方法、函数)(属性、变量)
区别二:默认访问权限不同(struct默认访问权限是公有的,而class默认访问权限是私有的)

#pragma once 防止头文件重复包含

string类的各种函数

迭代器生成两个指针:头指针在第一个字符,尾指针在最后一个有效字符的后一位

s1[i]与s1.at(i)的区别
当使用s1[i]时,当s1=“hello world”,打印s1[100]时产生了越界错误,但是编译器不报错不警告;
当使用s1.at(i)时,编译器不会报错,at更加安全

rbegin:指向最后一个地址
rend:指向第一个地址,与begin和end相反(逆序遍历)

vector类用于替换数组,需要包含头文件#include

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值