c++入门篇五
默认参数:
//默认参数
//函数的默认参数,参数后面有'='
//函数参数注意事项,如有一个位置有了默认参数
//那么从该位置的后面就必须要有参数
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++入门篇五的更多相关文章
- 【SSRS】入门篇(五) -- 设置报表格式
原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...
- redis的入门篇---五种数据类型及基本操作
查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key //设置key为10s 查看key还剩多少 ...
- 【SSRS】入门篇(六) -- 分组和总计
原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加 ...
- ElasticSearch入门 第五篇:使用C#查询文档
这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- Linux入门篇(五)——Shell(一)
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
- JS基础入门篇(三十五)—面向对象(二)
如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 【three.js详解之一】入门篇
[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...
随机推荐
- [安全转帖]浅析安全威胁情报共享框架OpenIOC
浅析安全威胁情报共享框架OpenIOC https://www.freebuf.com/sectool/86580.html Indicator of compromise Outline: 1. I ...
- iptables 限制ip访问3306端口
*filter:INPUT DROP [0:0] #全部关闭:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -s 172.4.4.14 -p tc ...
- Centos 7 搭建 你懂的
2018-11-21 19:10:18 本文初衷只是为自己下次搭建做个记录,文中代码也是借鉴其他博客的 以下为博客链接 https://www.cnblogs.com/shipengfei/p/ ...
- [leetcode] 5.Longest Palindromic Substring-1
开始觉得挺简单的 写完发现这个时间超限了: class Solution: def longestPalindrome(self, s: str) -> str: # longest palin ...
- Vue状态管理之Vuex
Vuex是专为Vue.js设计的状态管理模式.采用集中存储组件状态它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 1.首先让我们从一个vue的计数应用开始 ...
- React学习笔记(一)- 入门笔记
React入门指南 作者:狐狸家的鱼 本文链接:React学习笔记 GitHub:sueRimn 1.组件内部状态state的修改 修改组件的每个状态,组件的render()方法都会再次运行.这样就可 ...
- antd Tree组件中,自定义右键菜单
最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能. 直接上代码 class Demo extends Component { state = { rightClickNodeTree ...
- (二叉树 递归) leetcode 889. Construct Binary Tree from Preorder and Postorder Traversal
Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...
- C# activex开发中 axwebbrowser控件及 IE浏览器设置
<object type='application/x-vlc-plugin' id='vlc' events='True' codebase='../cab/axvlc.cab' classi ...
- axios传参
get //通过给定的ID来发送请求 axios.get('/user?ID=12345') .then(function(response){ console.log(response); }).c ...