欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++之函數(shù)的重載

 更新時(shí)間:2021年11月01日 08:59:43   作者:ALL IN C  
這篇文章主要介紹了c++函數(shù)重載的相關(guān)知識(shí),文章講解的非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

一、C++ 函數(shù)重載

C++ 致力于簡(jiǎn)化編程,能過(guò)函數(shù)重名來(lái)達(dá)到簡(jiǎn)化編程的目的

1.重載規(guī)則

1.函數(shù)名相同

2.參數(shù)的個(gè)數(shù)不同,類型不同,順序不同,都可以構(gòu)成重載

3.返回值類型必須相同,不同則不可以構(gòu)成重載

例如:

void func(int a); //ok
void func(char a); //ok
void func(char a,int b); //ok
void func(int a, char b); //ok
char func(int a); //與第一個(gè)函數(shù)有沖突

2.匹配原則

1.嚴(yán)格匹配,找到則調(diào)用

2.通過(guò)隱式轉(zhuǎn)換尋求一個(gè)匹配,找到則調(diào)用

#include <iostream>
#include <iomanip>
using namespace std;
void print(double a){
	cout<<a<<endl;
}
void print(int a){
	cout<<a<<endl;
}
int main(){
	print(1); // print(int)
	print(1.1); // print(double)
	print('a'); // print(int)
	print(1.11f); // print(double)
	return 0;
}

輸出結(jié)果

C++ 允許,int 到 long 、double,double 到 int 、float 隱式類型轉(zhuǎn)換。遇到這種情型,則會(huì)引起二義性

例:將上題上的 print(int a)中的類型 int 改為double

rror: call of overloaded 'print(int)' is ambiguous
print(1); // print(int)
error: call of overloaded 'print(char)' is ambiguous
print('a'); 

解決方法,在調(diào)用時(shí)強(qiáng)轉(zhuǎn)

3.重載底層實(shí)現(xiàn)

C++利用 name mangling(傾軋)技術(shù),來(lái)改名函數(shù)名,區(qū)分參數(shù)不同的同名函數(shù)。

實(shí)現(xiàn)原理:用 v-c-i-f-l-d 表示 void char int float long double 及其引用。

void func(char a); // func_c(char a)
void func(char a, int b, double c);//func_cid(char a, int b, double c)

4.extern “C”

name mangling 發(fā)生在兩個(gè)階段,.cpp 編譯階段,和.h 的聲明階段。

只有兩個(gè)階段同時(shí)進(jìn)行,才能匹配調(diào)用。

mystring.h

extern "C"{
	int myStrlen(char *str);
}

mystring.cpp

#include "mystring.h"
int myStrlen(char *str)
{
	int len = 0;
	while(*str++)
	len++;
	return len;
}

main.cpp

#include <iostream>
#include "mystring.h"
using namespace std;
int main()
{
	char *p = "china";
	int len;
	len = myStrlen(p);
	return 0;
}

C++ 完全兼容 c 語(yǔ)言,那就面臨著,完全兼容 c 的類庫(kù)。由.c 文件的類庫(kù)文件中函數(shù)名,并沒(méi)有發(fā)生 name mangling 行為,而我們?cè)诎?c 文件所對(duì)應(yīng)的.h 文件時(shí),.h 文件要發(fā)生name manling 行為,因而會(huì)發(fā)生在鏈接的時(shí)候的錯(cuò)誤。C++為了避免上述錯(cuò)誤的發(fā)生,重載了關(guān)鍵字 extern。只需在要避免 name manling的函數(shù)前,加 extern “C” 如有多個(gè),則 extern “C”{}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C語(yǔ)言中如何利用循環(huán)嵌套輸出一個(gè)菱形

    C語(yǔ)言中如何利用循環(huán)嵌套輸出一個(gè)菱形

    這篇文章主要介紹了C語(yǔ)言中如何利用循環(huán)嵌套輸出一個(gè)菱形問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C++ OpenCV制作哈哈鏡圖像效果

    C++ OpenCV制作哈哈鏡圖像效果

    這篇文章主要介紹了使用OpenCV C++ 制作哈哈鏡圖像特效。其原理就是讓圖像像素扭曲,將像素重新進(jìn)行映射。感興趣的可以跟隨小編一起試一試
    2022-01-01
  • VS2022 CUDA環(huán)境配置的實(shí)現(xiàn)步驟

    VS2022 CUDA環(huán)境配置的實(shí)現(xiàn)步驟

    本文主要介紹了VS2022 CUDA環(huán)境配置的實(shí)現(xiàn)步驟,文中通過(guò)圖文示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 詳解C++ sizeof(下)

    詳解C++ sizeof(下)

    這篇文章主要介紹了C++ sizeof的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C++ Boost Coroutine使用協(xié)程詳解

    C++ Boost Coroutine使用協(xié)程詳解

    通過(guò)Boost.Coroutine,可以在C++中使用協(xié)程。協(xié)程是其他編程語(yǔ)言的一個(gè)特性,通常使用關(guān)鍵字yield來(lái)表示協(xié)程。在這些編程語(yǔ)言中,yield可以像return一樣使用
    2022-11-11
  • 解析C語(yǔ)言中結(jié)構(gòu)體struct的對(duì)齊問(wèn)題

    解析C語(yǔ)言中結(jié)構(gòu)體struct的對(duì)齊問(wèn)題

    這篇文章主要介紹了C語(yǔ)言中結(jié)構(gòu)體struct的對(duì)齊問(wèn)題,作者深入到內(nèi)存分配方面來(lái)進(jìn)行解析,需要的朋友可以參考下
    2016-04-04
  • 基于WTL中使用雙緩沖避免閃爍的解決方法

    基于WTL中使用雙緩沖避免閃爍的解決方法

    本篇文章是對(duì)WTL中使用雙緩沖避免閃爍的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++入門之vector使用詳解

    C++入門之vector使用詳解

    這篇文章主要為大家介紹了C++入門之vector使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • 純c實(shí)現(xiàn)異常捕獲try-catch組件教程示例

    純c實(shí)現(xiàn)異常捕獲try-catch組件教程示例

    這篇文章主要為大家介紹了純c實(shí)現(xiàn)異常捕獲try-catch組件教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 如何通過(guò)函數(shù)指針調(diào)用函數(shù)(實(shí)現(xiàn)代碼)

    如何通過(guò)函數(shù)指針調(diào)用函數(shù)(實(shí)現(xiàn)代碼)

    指針可以不但可以指向一個(gè)整形,浮點(diǎn)型,字符型,字符串型的變量,也可以指向相應(yīng)的數(shù)組,而且還可以指向一個(gè)函數(shù)
    2013-09-09

最新評(píng)論