C 7 函式引數的擴充套件

2021-09-13 01:18:18 字數 1578 閱讀 8781

int mul(int x = 0);

int main(int argc, char* ar**)

int mul(int x)

問題:

函式定義中是否可以出現引數的預設值?

當函式宣告和定義中的引數預設值不同時會發生什麼?

當有函式宣告時,函式定義中不可以出現預設引數,否則編譯器報錯;

當沒有函式宣告時,函式定義中可以出現預設引數。

int mul(int x = 0);

// ...

int mul(int x = 5) // error !!

#include int mul(int x = 0);

int main(int argc, char* ar**)

int mul(int x)

輸出:01

4

int add(int x, int y = 1, int z = 2)

add(0); // x = 0, y = 1, z = 2

add(2, 3); // x = 2, y = 3, z = 2

add(3, 2, 1); // x = 3, y = 2, z = 1

#include int add(int x, int y = 0, int z = 0);

int main(int argc, char* ar**)

int add(int x, int y, int z)

輸出:13

6

int func(int x, int)

// ...

func(1, 2);

下面的兩種宣告發生等價嗎?

void func(); <--> void func(void);

c 中不等價:void func() 無返回值,可接受任意引數的函式; void func(void) 無返回值,無引數的函式

c++ 中等價:無返回值,無引數的函式

test.c

#include int func()

int main(int argc, char* ar**)

test.cpp

#include int func(int = 0, int = 0, int = 0)   // 為了相容原有的 c **

int main(int argc, char* ar**)

學習c (7)多型

一 如果子類定義了父類中原型相同的函式會發生什麼?1 函式重寫 在子類中定義與父類中原型相同的函式 函式重寫只發生在父類與子類之間 2 過載與重寫區別 1 過載 同乙個作用域 子類無法過載父類函式,父類同名函式將被覆蓋 過載是在編譯期間根據引數型別和個數決定 2 重寫 發生於父類 子類之間 父類和子...

C 函式引數的擴充套件

1 函式引數的預設值 c 中可以在函式宣告時為引數提供乙個預設值,當函式呼叫時沒有提供引數的址,則使用預設值 int mul int x 0 int main int argc,char ar int mul int x 引數的預設值必須在函式宣告中指定 問題 函式定義中是否可以出現引數的預設值?當...

c 7 拷貝建構函式和賦值建構函式

參考 int a 100 int b a include using namespace std class cexample 拷貝建構函式 cexample const cexample c 一般函式 void show cexample const cexample c 就是我們自定義的拷貝建構...