默认参数:

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

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. (三)jdk8学习心得之方法引用

    三.方法引用 https://www.jianshu.com/p/c9790ba76cee 这边博客写的很好,可以首先阅读,在这里感谢这篇文章的博主. 1. 格式 调用者::调用者具备的方法名 2. ...

  2. Python进阶6---序列化与反序列化

    序列化与反序列化*** 为什么要序列化 ? 定义 pickle库 #序列化实例 import pickle lst = 'a b c'.split() with open('test.txt','wb ...

  3. 题解 P2763 【试题库问题】

    这题可以用网络流,但我用的是匈牙利算法 进入正题 设第个类型需要个.将每个类型拆成个点,用一个边集数组记录它拆成的点. 第个试题有个类型,分别将与拆成的点连边,这样便构成了一个二分图. 使用匈牙利算法 ...

  4. Java编程思想_笔记_第二章_一切都是对象

    第二章对于知识只是点到,会在以后章节会详细展开. 笔记的侧重会偏向记录自己知识模糊的地方.比如 xxx 很重要很难很实用,但是已经熟练使用就没有记录,而 “使用对象.成员名称来使用成员变量”,较简单而 ...

  5. C++:普通变量C++命名规则

    C++提倡使用拥有一定意义的变量名,使程序代码更有阅读性,命名是必须使用的几种简单的C++命名规则: 命名时只能使用:字母字符.数字和下划线(_); 第一个字符不能是数字: 区分大小写(C++对大小写 ...

  6. C#调用Java的WebService添加SOAPHeader验证

    C#调用Java的WebService添加SOAPHeader验证(2) 1.问题描述 调用的Java的webservice string Invoke(string func, string req ...

  7. ELK 构建 MySQL 慢日志收集平台详解

    ELK 介绍 ELK 最早是 Elasticsearch(以下简称ES).Logstash.Kibana 三款开源软件的简称,三款软件后来被同一公司收购,并加入了Xpark.Beats等组件,改名为E ...

  8. thrift使用

    一.什么是thrift Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务.它被当作一个远程过程调用(RPC)框架来使用,是由FaceBook为“大规模跨语言服务开发”而开 ...

  9. 【sql server】备份集中的数据库与现有数据库不同 解决方案

    #事故现场: 在进行sql server 数据库还原的时候,报错如下: #解决方案: _________________________________________________________ ...

  10. spring boot项目能启动打包失败

    如题,项目本地可以正常启动.但是用 mvn clean package打包就失败! 事件原因如下: 一.pom.xml少packing元素 <groupId>com.sanyi</g ...