今天我发现可以在具有一个签名的头文件中声明一个函数,并在具有不同(相似)签名的源文件中实现它。例如,像这样:
// THE HEADER example.hpp
#ifndef EXAMPLE_HPP
#define EXAMPLE_HPP
int foo( const int v );
#endif
// THE SOURCE FILE example.cpp
#include "example.hpp"
int foo( int v ) // missing const
{
return ++v;
}
这是允许的吗?或者这是编译器的扩展(我使用的是 g++ 4.3.0)?
编辑 我正在以迂腐和最大可能的警告级别进行编译,但我仍然没有收到警告或错误。