程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中方法定義和調用需要注意的一個地方

C++中方法定義和調用需要注意的一個地方

編輯:關於C++

最近開始認真地再學一下C++的編程,陸續會有一些筆記整理出來。

今天要講的是,C++程序中,方法之間調用的一個需要注意的地方

例如,我們有一個方法

int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

我們需要在另外一個方法裡面調用它

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

那麼請注意了,maxvalue方法是必須定義在main方法之前的,而不能在後面。

下面的代碼能編譯通過

#include <iostream>
using namespace std;
int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

而下面的代碼則會出現編譯錯誤

#include <iostream>
using namespace std;

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

當然,也可以將該方法單獨定義在一個頭文件中,然後Include進來,這個機制與ASP裡面是一樣的

我們先將如下代碼定義為common.h文件

int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}

然後修改原先的代碼文件

#include <iostream>
#include "common.h"

using namespace std;

int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

include這個指令其實就相當於是將common.h的內容插入到當前cpp文件的頂部。

那麼,為什麼同樣是include,但有兩種寫法呢?

#include <iostream>

#include "common.h"

原因在於,第一個iostream是所謂的標准庫(必須用<>包含),而第二個common.h是自定義庫(必須用雙引號包含)

還有一個問題,如果此時我們的調用方也定義了一個maxvalue方法呢

#include <iostream>
#include "common.h"
using namespace std;
int maxvalue(int a,int b,int c)
{
return c;
}
int main()
{

int a=5,b=8,c=10;
cout<< maxvalue(a,b,c);
return 0;
}

結果會怎麼樣?答案是無法通過編譯

但是,如何解決這樣的問題呢?答案是可以為common.h定義一個命名空間,如下

namespace common{
int maxvalue(int a,int b,int c)
{
if(a<b) a=b;
if(a<c) a=c;
return a;
}
}

這樣的話,就可以通過下面的方式來調用該方法呢

#include <iostream>
#include "common.h"

using namespace std;//這是導入命名空間的語法,與C#是不一樣的,多了一個特殊的namespace關鍵字

int maxvalue(int a,int b,int c)
{
return c;
}

int main()
{

int a=5,b=8,c=10;
cout<< common::maxvalue(a,b,c);//調用common.h中的maxvalue方法,用兩個冒號表示命名空間限定符,這與C#也不一樣
cout << endl;
cout << maxvalue(a,b,c);//這是調用自己定義的maxvalue方法
return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved