引用的本质
本质:引用的本质在c++内部的实现是一个指针常量
即指向的内存不可以更改,但是储存的值可以更改

int &ref = a;
//自动转换为int * const ref = &a
ref = 20;
//内部发现ref是引用,自动转换为*ref = 20
//本质也是指针

常量引用
作用:常量引用主要用来修饰常量,防止误操作
在函数的形参列表中,可以加const修饰形参,防止形参改变实参

int a = 10;
const int & ref = 10;
//加入const之后编译器将代码修改为 int temp = 10;
//const int & ref = 10;
ref = 20;
//错误,加入const之后只读,不可以修改void showvalue(const int &val)
{cout<<val<<end1;
}
showvalue(a);

函数默认参数
在c++,函数的形参列表中的形参是可以有默认值的
语法:返回值类型 函数名 (参数 = 默认值){}

int func(int a,int b = 20,int c = 30)
{return a+b+c;
}
func(10);
//b和c存在默认值,所以可以只输出一个参数func(10,30);
//如果传入了b的值,会覆盖默认值,用自己传入的数据

注意事项
1.如果某个位置已经有了默认参数,那么从这个位置往后,都必须有默认值
2.如果函数声明有默认参数,函数实现就不能有默认参数

int func(int a = 20,int b = 10);int func(int a = 20,int b = 10)
{return a+b;
}
//错误,声明跟实现只能有一个有默认参数,否则会变成重复定义

函数占位参数
c++中函数的形象列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
语法:返回值类型 函数名 (数据类型){}

void func(int a,int = 10)
{cout<<a<<end1;
}func(10,10);
//传入数据时也要包括占位参数
//传入的参数在函数体中无法调用
//占位参数可以加默认值

函数重载
作用:函数名可以相同,提高复用性

函数重载满足条件
1.同一个作用域下
2.函数名称相同
3.函数参数类型不同,或者个数不同或者顺序不同

void func()
{}void func(int a)
{   cout<<a<<end1;
}func();
func(10);
//根据传入的参数不同,调用不同的函数

函数的返回值不可以作为重载的条件

函数重载的注意事项
1.引用作为重载的条件
2.函数重载碰到默认参数

void fun(int &a)
{cout<<a<<end1;
}void fun(const int &a)
{cout<<a<<end1;
}int a = 10;
fun(a);
//a定义是一个局部变量,所以会调用第一个函数
fun(10);
//会自动调用第二个,因为只有常量引用可以直接等于一个常量void func(int a,int b = 10z)
{cout<<a<<end1;
}void func(int a)
{cout<<a<<end1;
}func(10);
//会出现二义性,都可以接收一个参数

类和对象
c++面向对象的三大特性为:封装、继承、多态
c++认为万事万物都皆为对象,对象上有其属性和行为

封装
封装是c++面向对象三大特性之一
封装的意义:
将属性和行为作为一个整体,表现生活中的事物
将属性和行为加以权限控制

语法:class 类名(访问权限:属性/行为);

const double pi = 3.14;class circle
{//访问权限
public://公共权限//属性int r;//行为double calculate(){return 2*pi*r;}
};//创建对象
circle c1;
c1.r = 10;
//调用属性,给属性赋值
l = c.calculate();
//调用类里的函数
class student
{public//公公权限//属性string name;int id;void show(){cout<<name<<id<<end1;}void getname(string sname){name = sname;}
};
student stu;//实例化
stu.name = "li";
stu.id = 10;
stu.show();stu.getname("li");
stu.show();

类中的属性和行为 我们统称为 成员
属性 成员属性 成员变量
行为 成员函数

类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
1.public 公共权限 成员类内可以访问 类外不可以访问
2.protected 保护权限 成员类内可以访问 类外不可以访问 子类可以访问父类中的权限
3.private 私有权限 成员类内可以访问 类外不可以访问

class person
{public:string name;
protected:string car;
private:string password;
public:void func(){name = "li";car = "a";password = "123456"//类内可以正常访问}
person pl;
pl.name = "zh";
pl.car = "a";
pl.password = "123456";
//后两个错误,都不可以类外访问
}

struct和class的区别
区别在于默认的访问权限不同
struct默认为public
class默认为private

class c1
{int a;//默认权限为私有
};struct c2
{int a;//默认为公有权限
}s1;
c1.a = 100;
//错误
c2.a = 100;
//正确

成员属性设置为私有
1.将所有成员的属性设置为私有,可以自己控制读写权限
2.对于写权限,我们可以检测数据的有效性

class person
{private:string name;//可读可写int age;//只读string parterner;//只写
public:void setname(string m_name){name = m_name;}string show(){return name;}
}

c++学习笔记(6)相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

  10. NuGet学习笔记(3) 搭建属于自己的NuGet服务器

    文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重 ...

最新文章

  1. ggplot2版聚类物种丰度堆叠图
  2. Java1.8 帮助文档
  3. idea中刷新项目快捷键_解决 IDEA 使用过程中让你觉得不爽的一些问题
  4. 财务思维01-财务报表
  5. vue2.0 -- watch监听
  6. 牛客网编程题python输入输出_牛客网算法题目记录
  7. leetcode 427. Construct Quad Tree | 427. 建立四叉树(分治法)
  8. 搜索二叉树之字典实现
  9. 从零开始刷Leetcode——数组(581.605.628)
  10. 大话计算机张冬pdf扫描分享,第一章 【PMC分享】《大话存储》作者张冬:OpenPower CAPI简析.pdfx.pdf...
  11. php实现先序、中序、后序遍历二叉树
  12. EAX寄存器(关键跳,关键CALL)
  13. java实现 图片转ico
  14. Sigfox的物联网生意经:弱水三千只取一瓢饮
  15. shell小脚本--laod博客更新hosts文件[脚本]
  16. rxjava背压_关于RxJava背压
  17. Salesforce随笔: 解决被指定给Chatter相关用户的RecordType无法被删除的问题
  18. 支付宝查询自己UID
  19. 松弛法求解给定边界条件的泊松方程
  20. 量化选股之经典的因子选股

热门文章

  1. Java反射机制实现与原理
  2. 语义计算_语义多态性如何在量子计算中起作用
  3. Linux部署springboot项目(从安装java开始)
  4. mysql 语句 循环入数据库(Navicat)
  5. MCU-LCD屏与RGB-LCD屏的区别?
  6. ResNet网络详解
  7. 如何定义一个具有返回值的函数
  8. python 视频硬字幕提取 内嵌字幕提取工具
  9. SQLServer将日期转换成字符串格式
  10. 【妙python】按照元素长度排序列表