У меня есть источник, который говорит мне:Объявления функции и последовательность определения
The source file that defines a function should include the header that contains that function’s declaration. That way the compiler will verify that the definition and declaration are consistent.
Я не знаю, как это правильно, какой тип «последовательность» мы говорим о? Поскольку, если определение и декларация не были согласованы в типе возвращаемого типа или типа/номера аргумента, компилятор просто подумал бы, что я объявляю отдельную функцию и ничего не проверяю вообще.
E.g. Если бы я был заголовок файла test.h:
void func();
и источник файла testsource.cpp:
#include <iostream>
#include "test.h"
using namespace std;
void func(int x){
cout << "Hello StackOverflow" << endl;
}
Если бы я запустить эту программу, компилятор просто думать FUNC() и FUNC (int) были разными функциями и не вызывали беспокойства о последовательности. Какую консистенцию он имеет в виду?
Перегруженные функции. –
C++ поддерживает перегрузку функций, поэтому эти две функции 'void func()' и 'void funct (int)' будут считаться двумя совершенно отдельными функциями после того, как их имя будет искажено. – Bregalad
Используйте пространства имен. 'namespace Bob {void f(); } ', а затем в источнике' void Bob :: f (int x) {} '* не будет * компилироваться. –