C++自我学习.3

本文介绍了C++编程中的重要概念,包括函数返回引用的注意事项、左值与右值的区别、默认实参的使用、函数重载、函数模板和递归,以及C++11中的随机数生成机制,重点讲解了random库的随机数引擎和分布类的运用。
摘要由CSDN通过智能技术生成

C++自我学习.3

1.返回引用

当返回的是被调函数中的一个变量的引用时,注意如果自动变量不加static说明符,在返回就会被销毁,引用指向这样一个变量会存在危险性

2.左值和右值

左值是一个对象或者变量,代表一个固定地址,而没有固定地址的临时对象或临时变量就是右值,不能代表一个固定地址

int  i = 1;//赋值运算赋左侧必须是左值,i就是左值,变量名而3--就不行

左值也可以拥有右值属性,反过来不行

例:i = i+5;

i+5虽然是左值,但拥有右值属性

补:左值表达式就是一个值为左值的表达式,右值表达式就是值为右值的表达式

3.默认实参:

某些函数中有这样一种形参,在函数很多次被调用中,它们都被赋予相同的值,我们把这个反复出现的值叫做默认实参

注意:

1.调用含有默认实参的函数时,可以包含该实参,也可以省略该实参

2.赋默认实参时,要从右向左赋值

3.多个形参中,一旦某个形参被赋了某个默认值,后面的形参都必须有默认值

  1. 函数重载:

很简单,就是有一批功能类似(甚至相同)的函数,只是面对传来的不同数据类型的实参,分别应用到不同的函数中去计算

如:

int square(int x)          square(a)

double square(double y)   square(b)

char square(char y)       square(c)

string sauqre(string z)     square(d)

a,b,c,d保证实参类型和形参类型相符合

同名函数形参类型形参个数必须有一个不同

5.函数模板:

泛型编程

template开始泛型编程

typename声明泛指类型

T形式类型形参作为实际数据类型的占位符

例:

template <typename T>

T max(T value1,T value2, T value3 )

{

T max=value1;

......

}

6.递归:

要素:

1.递归函数的功能

2.递归的基本情况和终止条件

3.递归的等价关系式

7.c++11:随机数生成引擎和配置

1.随机数函数rand( )

随机数种子:srand(seed),种子通常用时间函数time(0)

2.<random>

random库中的组件——随机数引擎类和随机数分布类。

随机数引擎类:原始随机数发生器

随机数分布类:接受一个随机数引擎作为参数,分布类的对象使用这个参数生成随机数,并映射到指定的分布,根据用户的需求利用随机数引擎生成符合条件的随机数某一分布概率的随机数。

如何使用:(不建议单独使用引擎类

default_random_engine engine1 (static_cast<unsigned int>(time(0)));

uniform_int_distribution <unsigned int> random2 (1,100);   <unsigned int>随机数类型

常见:

default_random_engine 随机非负数引擎类

uniform_int_distribution 指定范围非负数分布类,生成int,unsigned int,shor,unsigned short,long,long long等等数据类型

uniform_real_distribution 指定范围随机实数分布类,float,double.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成也萧何,败也萧何

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值