void
func
(void
)void
func
(int i)
void
func
(int i,
double d)
void
func
(int i)
char
*func
(int i)
//函式名相同, 但形參型別一樣, 不構成過載關係
void
func
(int j)
//函式名相同, 但形參型別一樣, 不構成過載關係. 甚至編譯時要報重定義錯誤
void
func
(void
)//(1)
void
func
(int i)
//(2)
intmain
(void
)
#include
using namespace std;
void
func
(int i)
void
func
(int i,
int j)
void
func
(int i,
float j)
intmain()
#include
using namespace std;
// char-->int: 公升級轉換(單位元組到4位元組,會有記憶體浪費)
void
bar(
int i)
// char-->const char: 常量轉換
void
bar(
const
char
)// short-->char: 降級轉換(雙位元組到單位元組)
// short型別表示的資料範圍是2^16, 而char是2^8, 降級會造成值域損失
void
foo(
char c)
// char-->int: 公升級轉換, 會有記憶體浪費,但是可以保證資料的完整性
void
foo(
int c)
// 省略號匹配: 最差的一種匹配, 沒啥選才選它
// ... 在語法上稱為不定長(變長)引數, 可以接受任意多個,任意型別的實參
void
hum(
int,..
.)//double-->int: 降級轉換,8位元組到4位元組,損失值域
void
hum(
int,
int)
intmain()
void
func
(int i,
double d)
void
func
(int i,
int j)
// $g++ -c test.c -o a.o
// nm 可以檢視目標檔案裡面的識別符號
// $nm a.o
//_z是編譯器裡的內部標識沒有具體含義,忽略. 4標識函式名字串長度, i和d表示int和double
// 0000000000000000 t _z4funcid
// 000000000000000f t _z4funcii
// gcc 是不會改變函式名字的
void
func
(int i,
double d)
// $gcc -c test.c -o a.o
// $nm a.o
// 0000000000000000 t func
cpp.cpp
#include
using namespace std;
// extern "c" 告訴編譯器編譯時用c語言的方式, 也就是說不要換名了, 方便c程式呼叫c++的函式
extern
"c"void
hello
(void
)
c.c
void
hello
(void);
intmain()
$ g++ -c cpp.cpp; gcc -c c.c;
#只編譯不鏈結
$ nm cpp.o
u __cxa_atexit
u __dso_handle
0000000000000061 t _global__sub_i_hello
0000000000000000 t hello #函式名沒有被改
0000000000000023 t _z41__static_initialization_and_destruction_0ii
u _znsolsepfrsos_e
u _znst8ios_base4initc1ev
u _znst8ios_base4initd1ev
u _zst4cout
u _zst4endlicst11char_traitsiceerst13basic_ostreamit_t0_es6_
0000000000000000 b _zstl8__ioinit
u _zstlsist11char_traitsiceerst13basic_ostreamict_es5_pkc
$ g++ cpp.o c.o #鏈結生成可執行檔案
$ ./a.out
$ hello c++!
mysql 函式過載 C 方法過載(函式過載)
在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...
C 函式 函式過載
如果同一作用域內的幾個函式名字相同但形參列表不同,我們稱之為過載函式。void print const char cp void print const int beg,const int end void print const int ia,size t size 這些函式接受的形參型別不一樣,...
C 函式過載
函式過載 overloaded function 在相同的作用域中的兩個函式,如果有相同的名字而形參表不同 注意 如果僅僅函式的返回值不同是不能實現函式過載 void func int int func int error,僅僅返回值不同是不能作為函式過載,這屬於函式重定義 形參表包括 引數的型別 ...