默认参数:

//默认参数
//函数的默认参数,参数后面有'='
//函数参数注意事项,如有一个位置有了默认参数
//那么从该位置的后面就必须要有参数

void func(int a, int b = , int c = ) {
//b有默认参数,b的后面也应该要有默认参数,只要有一个位置有,那么之后的也必须要有
//如果有传入参数,那么就以传入参数为准,如果没有就是默认参数
//函数声明和实现只能出现一次默认参数
}
void  func(int a, int b = , int c = );//函数声明和函数实现只需要出现一次默认参数就可以
void func(int a, int b = , int c = ){}
func(12,5);//会传入两个参数,a=12,b5,c=34,c的话会使用默认参数

占位符:

//占位参数
//如果有了占位参数,函数调用的时候必须要提供这个参数
void fun2(int a, int) {//有了占位符,必修要传入两个参数 }
在c语言中没有默认参数和占位参数

函数重载
C++中函数名称可以重复
必须在同一个作用域内,函数名称相同

void  test01() {//不在一个作用域之内

}
class fun {
void test01() {
}
};

函数的参数个数不同或者类型不同或者顺序不同
函数重载碰到了默认参数的问题,要注意二义性的问题
引用必须要引入合法的内存空间 ,const可以开辟内存空间
const也可以作为函数重载的判断条件

void  test02(int  &p) {
}
void test02(const int &p ) {}//const会开辟一个内存空间,所以在这里被接收到
test02()
//函数的默认参数,避免二义性
void fun(int a, int c=) {
}
void fun(int a) {
}
fun();//此时有一个函数是带有默认参数的,二义性,不知道如何选择

函数重载原理:

编译器为了实现重载,编译器会用不同的参数类型来修饰不同的函数名,比如void  func(),编译器可以回将函数名修饰成_func

编译如果修饰重载并没有特同同统一的标准

封装:

//C++中的封装严格类型转换检测,让属性和行为绑定到一起
//属性和行为作为一个整体来表示一个事务

#include  "pch.h"
#include <iostream>
using namespace std;
#include <string> struct Person
{
int age;
char name[];
void Personeat() {
cout << "Person:" << name << "吃饭" << endl;
}
};
//定义两个结构体
struct Dog
{
char name[];
void Dogeat() {
cout << name << "吃饭" << endl;
}
};
void test01() {
Person p1;//p1只能是Person的对象,里面只有person结构体的属性和方法,没有另一个结构体的
strcpy_s(p1.name, "yun");//把这后面的字符封装进去
p1.Personeat();//这个是已经在执行cout了 }
int main() {
test01();
}

c++入门篇五的更多相关文章

  1. 【SSRS】入门篇(五) -- 设置报表格式

    原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...

  2. redis的入门篇---五种数据类型及基本操作

    查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key //设置key为10s 查看key还剩多少 ...

  3. 【SSRS】入门篇(六) -- 分组和总计

    原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加 ...

  4. ElasticSearch入门 第五篇:使用C#查询文档

    这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  5. .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了

    写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...

  6. Linux入门篇(五)——Shell(一)

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

  7. JS基础入门篇(三十五)—面向对象(二)

    如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)

  8. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  9. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

随机推荐

  1. Webstorm的一些常用快捷键

    ctrl+/ 单行注释ctrl+shift+/块注释Ctrl+X 删除行Ctrl+D 复制行Ctrl+B 快速打开光标处的类或方法Ctrl+F 查找文本Ctrl+R 替换文本ctrl+shift+ + ...

  2. EntityFrameworkCore中的OnModelCreating

    在我们使用EntityFrameworkCore作为数据库ORM框架的时候,不可避免的要重载DbContext中的一个虚方法OnModelCreating,那么这个方法到底是做什么的?到底有哪些作用呢 ...

  3. 搭建一个MP-demo(mybatis_plus)

    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 搭建一个简单的MP-demo 1.配置pom.xml ...

  4. 关于Eclipse使用Git基础篇

    一:Git的下载与安装与基本使用 1.打开eclipse->help->Eclipse Markplace->search->fiind输入Egit 你会看到如下截图(我的为已 ...

  5. jenkins针对不同的项目组对用户进行权限分配

    因jenkins上存有de(开发).te(测试)等三个不同环境的项目,同时因为项目需求,需要对不同的开发及测试人员配置不同的jenkins权限,即以项目为单位,对不同人员进行不同权限配置,要求如下: ...

  6. Ffmpeg使用

    ffmpeg官网 刚开始安装的推荐博客|--利用FFmpeg 开发音视频流:一.二.三 1.分辨率码率 主要视频格式与码率: 分辨率 200p——对应的码率是256kpbs,也就是说,一分钟需要流量1 ...

  7. Codeforces 1092F Tree with Maximum Cost(树形DP)

    题目链接:Tree with Maximum Cost 题意:给定一棵树,树上每个顶点都有属性值ai,树的边权为1,求$\sum\limits_{i = 1}^{n} dist(i, v) \cdot ...

  8. SQL学习指南第四篇

    SQL必知必会(第4版)学习笔记 插入数据 插入有几种方式: 插入完整的行 插入行的一部分 插入某些查询的结果(INSERT SELECT) 注意:省略列 如果表的定义允许,则可以在 INSERT 操 ...

  9. 【优秀的图片后期编辑工具】Luminar 3.1 for Mac

     [简介] 今天和大家分享最新的 Luminar for Mac 3.1 版本,支持中文界面,Luminar是一款Mac上优秀的图片后期处理工具,功能类似 Photoshop Lightroom 等软 ...

  10. 常见的数据扩充(data augmentation)方法

    G~L~M~R~S 一.data augmentation 常见的数据扩充(data augmentation)方法:文中图片均来自吴恩达教授的deeplearning.ai课程 1.Mirrorin ...