[英]Functions Arrangement in C++
我剛開始使用 C++,我在安排函數時遇到了一些問題。
當我使用 Unity (C#) 時,我習慣先編寫 Start 函數,然后根據它們將被調用的時間編寫其他函數。
但是在這里,在 C++ 中,反之亦然!
例如,我在LearnCPP.com上學習時編寫了這個簡單的程序
#include <iostream>
void Add(int No1, int No2)
{
std::cout << No1 + No2 << std::endl;
}
void Subtract(int No1, int No2)
{
std::cout << No1 - No2 << std::endl;
}
void GetNumbers(int Operation)
{
int No1;
int No2;
std::cout << "The first no. : ";
std::cin >> No1;
std::cout << "The second no. : ";
std::cin >> No2;
if (Operation == 1)
{
Add(No1, No2);
}
else if (Operation == 2)
{
Subtract(No1, No2);
}
}
int main ()
{
while (true)
{
int Operation;
int TryAgain;
std::cout << "Enter 1 for an Addition Operation. Enter 2 for a Subtraction Operation." << std::endl;
std::cin >> Operation;
GetNumbers(Operation);
std::cout << "Enter 1 to try again. Enter 2 to exit.";
std::cin >> TryAgain;
if (TryAgain == 1)
{
}
else if (TryAgain == 2)
{
break;
}
}
return 0;
}
如果我打算用 C# 編寫它,我會先編寫 main (Start) 函數,然后是 GetNumbers,然后是 Add 和 Subtract 函數。
如果我以這種方式用 C++ 編寫它,則會出現錯誤(我使用的是 Visual Studio 2013 社區版)。
有什么辦法可以做到嗎?
提前致謝
函數必須在使用之前聲明,但您可以稍后定義它們:
int add (int a, int b);
int main () {
return add(1,2);
}
int add (int a, int b) {
return a + b;
}
這是因為 C++ 需要一個函數頭來知道函數在調用之前使用哪些參數,因此您要么必須在 main 中調用它們之前定義它們,要么像這樣聲明函數原型:
#include <iostream>
//function prototypes
void Add(int No1, int No2);
void Subtract(int No1, int No2);
void GetNumbers(int Operation);
int main ()
{
while (true)
{
int Operation;
int TryAgain;
std::cout << "Enter 1 for an Addition Operation. Enter 2 for a Subtraction Operation." << std::endl;
std::cin >> Operation;
GetNumbers(Operation);
std::cout << "Enter 1 to try again. Enter 2 to exit.";
std::cin >> TryAgain;
if (TryAgain == 1)
{
}
else if (TryAgain == 2)
{
break;
}
}
return 0;
}
void Add(int No1, int No2)
{
std::cout << No1 + No2 << std::endl;
}
void Subtract(int No1, int No2)
{
std::cout << No1 - No2 << std::endl;
}
void GetNumbers(int Operation)
{
int No1;
int No2;
std::cout << "The first no. : ";
std::cin >> No1;
std::cout << "The second no. : ";
std::cin >> No2;
if (Operation == 1)
{
Add(No1, No2);
}
else if (Operation == 2)
{
Subtract(No1, No2);
}
}
您應該至少前向聲明函數,並且可能使用包含前向聲明的 .hpp 文件。
在 C++ 中,我們主要使用作用域,也就是說,只要變量或函數沒有被聲明為 extern 或之前沒有聲明過(頭文件等),編譯器就無法判斷。
在這種特殊情況下,如果將蘋果與蘋果進行比較,C++ 的工作方式就像 C#。 類似於 C# 示例將包含一個具有一些成員的類,您可以按任何順序定義和調用這些成員:
class CMyClass
{
void Start()
{
GetNumbers(1);
}
void GetNumbers(int Operation)
{
Add(2, 3);
Subtract(4, 5);
}
void Add(int No1, int No2) {}
void Subtract(int No1, int No2) {}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.