簡體   English   中英

C++中的函數排列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM