首页 > 编程语言 >C++核心编程之-函数提高

C++核心编程之-函数提高

时间:2023-04-11 13:46:11浏览次数:45  
标签:函数 int 编程 C++ 占位 参数 重载 默认值

函数提高

函数默认参数

在c++中,函数的形参列表中的形参是可以有默认值的。

语法:返回值类型 函数名 (参数=默认值) {}

注意点:1、如果某个位置参数有默认值,那么从这个位置往后,必须都要有默认值

​ 2、如果函数声明有默认值,函数实现的时候就不能有默认参数

函数占位参数

C++中函数的形参列表中可以有占位参数,用来做占位,调用函数时必须填补该位置

语法:返回值类型 函数名 (数据类型) {}

示例:

#include <iostream>
using namespace std;

// 占位参数
// 返回值类型 函数名(数据类型){}

// 占位参数 还可以有默认值  void func(int a, int 10) 
void func(int a, int)   // 第二个int起到占位作用
{
	cout << "this is func" << endl;
}

int main()
{
	func(10, 20);


	return 0;
}

函数重载

函数重载概述

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

函数重载满足条件:

  • 同一个作用域下
  • 函数名称相同
  • 函数参数类型不同 或者 个数不同 或者 顺序不同

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

示例:

#include <iostream>
using namespace std;

// 函数重载
// 可以让函数名相同,提高复用性


// 函数重载的条件
//1、同一个作用域下(这里是全局作用域)
//2、函数名字相同
//3、函数参数类型不同,或者个数不同,或者顺序不同
void func(int a)
{
	cout << "我是func (int a 的调用)" << endl;
}

void func()
{
	cout << "我是func!" << endl;
}

void func(double a)
{
	cout << "我是func (double a 的调用)" << endl;
}


void func(double a, int b)
{
	cout << "我是func (double a, int b 的调用)" << endl;
}

void func(int b, double a)
{
	cout << "我是func (int b, double a 的调用)" << endl;
}

// 注意事项
// 函数的返回值不可以作为函数重载的条件
//----------------------------------------------------
//int func(int b, double a)  // 这里与上面改为了int 是错误的
//{
//	cout << "我是func (int b, double a 的调用)" << endl;
//}
//----------------------------------------------------

int main()
{ 
	func();
	func(10);
	func(3.14, 10);
	func(10, 3.14);


	return 0;
}

查看有无语法错误技巧

函数重载注意事项

  • 引用作为重载条件
  • 函数重载碰到函数默认参数
#include <iostream>
using namespace std;

// 函数重载的注意事项
// 1、引用作为函数重载的条件
void func(int& a)
{
	cout << "函数func(int& a)的调用" << endl;
}

void func(const int& a)   
{
	cout << "函数func(int& a)的调用" << endl;
}


// 2、函数重载碰到默认参数(导致二义性)
void func2(int a, int b =10)
{
	cout << "函数func2(int a)的调用" << endl;
}

void func2(int a)
{
	cout << "函数func2(int a)的调用" << endl;
}

int main()
{ 
	int a = 10;
	func(a);   // a是变量 可读可写,所以走第一个函数(无const版本)  // const修饰的是常量,只读


	func(20);  // 这里走第二个函数(有const版本) 相当于形参 const int &a = 20;


	printf("-----------------------------------------------------------------------");

	// func2(10);  // 出现二义性,报错,尽量避免这种情况

	return 0;
}

标签:函数,int,编程,C++,占位,参数,重载,默认值
From: https://www.cnblogs.com/code3/p/17305933.html

相关文章

  • 新的 CSS 伪类函数 :is() 和 :where()
    新的CSS伪类函数:is()和:where()Postedon 2022-08-1514:39  书中枫叶 阅读(48) 评论(0)  编辑  收藏  举报:is()和:where()标题中的 <b> 标签进行颜色调整: h1>b,h2>b,h3>b,h4>b,h5>b,h6>b{ color:hotpink; }......
  • 面向对象 程序分析 友元函数
    什么是友元函数?友元函数(friendfunction)是C++中一个特殊的函数类型。它不是类的成员函数,但它可以访问类的私有(private)和保护(protected)成员。友元函数提供了一种突破类封装的机制,允许在类之外的代码访问类的私有和保护成员。当你想要让某个函数访问一个类的私有和保护成员时,可以......
  • vue生命周期(钩子函数)
    目录介绍介绍Vue实例有一个完整的生命周期,也就是从开始创建初女台化数据、编译模板、挂载DOM、渲染一更新一渲染、卸载等一系列过程,我们称这是Vue的生命周期。生命周期:vue实例从创建到销毁的过程。生命周期钩子:就是生命周期事件的别名而已钩子函数描述创建期间的......
  • 函数中可变参数的应用
    背景在函数或类定义中传入的参数是可变参数,常见的是字典、列表、数组(ndarray),函数内容如果仅仅是引用该这些对象没有什么大问题。但是如果涉及增、删操作,将会发生非常诡异的事情。下面以《流畅的Python》中定义的一个案例进行介绍:classHauntedBus:def__init__(self,p......
  • 转:C#与C++数据类型转换
    (94条消息)C#与C++数据类型转换_c#c++类型转换_终有期_的博客-CSDN博客c++:HANDLE(void*)----c#:System.IntPtrc++:Byte(unsignedchar)----c#:System.Bytec++:SHORT(short)----c#:System.Int16c++:WORD(unsignedshort)----c#......
  • C++核心编程之-引用
    引用引用的基本使用作用:给变量起别名语法:数据类型&别名=原名引用的注意事项引用必须初始化引用在初始化后,不可以改变示例:#include<iostream>usingnamespacestd;intmain(){ inta=30; intb=50; //int&c;//这行错误,引用必须初始化 int&c=a......
  • Code-C++-fstream-输出到文件(待完善)
    Code-C++-fstream-输出到文件#include<fstream>#include<string>voidexportFile(std::stringstrFileName,intnVal){std::stringstrFilePath="./"+strFileName;std::ofstreamosFile(strFilePath.c_str(),std::ios::app|std......
  • 高精度加法C++
    #include<iostream>#include<vector>usingnamespacestd;vector<int>Add(vector<int>&A,vector<int>&B){vector<int>C;intt=0;for(inti=0;i<A.size()||i<B.size();i++){if(i<A.size(......
  • C++-C11-chrono-获取当前时间、获取阶段时间
    C++-C11-chrono-获取当前时间、获取阶段时间Linux下使用C++11的chrono库获取时间。#include<chrono>#include<thread>#include<iostream>int64_tgetCurrentLocalTimeStamp(){std::chrono::time_point<std::chrono::system_clock,std::chrono::millisec......
  • MySQL函数
    HEX[[email protected]][test]>select16,HEX(16);+----+---------+|16|HEX(16)|+----+---------+|16|10|+----+---------+1rowinset(0.00sec) CAST[[email protected]][test]>createtabletest_col_sort(userchar(10),typeenum(�......