许多语言(如Java,C#)不会将声明与实现分开.C#有一个部分类的概念,但实现和声明仍然保留在同一个文件中.
为什么C++没有相同的型号?拥有头文件更实用吗?
我指的是当前和即将推出的C++标准版本.
我理解并非常欣赏分离头文件(.h、.hpp)和源文件(.cpp)的做法。
然而,许多简单的类可以完全在头文件本身中表达。我可以在类中定义一些方法,在类下定义其他方法(例如模板方法、内联方法)。
当我可以在头文件中声明和定义整个类时,创建 .cpp 文件有什么好处?(我什至需要吗?)
我知道extern C意味着函数应该用C风格编译但是extern function_datatype functionname是什么意思?
extern void sharelog(const char *rem_host, const char *username,
const char *, const char *,
const char *, const char *);
Run Code Online (Sandbox Code Playgroud)
没有"C"的extern是什么意思?
此外,在几乎每个程序的头文件中,我都看到了类似的东西
void sharelog(const char *rem_host, const char *username,
const char *, const char *,
const char *, const char *);
Run Code Online (Sandbox Code Playgroud)
如果在.c/.cpp文件中完成,为什么要再次声明该函数?它有时也会在没有它的论证的情况下宣布
int Function;
Run Code Online (Sandbox Code Playgroud)
此外,一些函数可以这样写:
int CSomething::Somefunction() const
Run Code Online (Sandbox Code Playgroud)
为什么在函数后添加const?
我也偶然发现了具有这些神秘点的功能
void function(int prio, const char *fmt, ...)
Run Code Online (Sandbox Code Playgroud)
还有很多其他的东西我也想问,但似乎我已经问过了.我知道有些人可能会说去学习C/C++,但是相信我,这些东西不是为初学者讨论的.
我对这个动机感兴趣 - C/C++的动机是什么让接口与头文件分离,为什么其他语言的作者没有借用这个概念并在其他(更新的)语言中使用它?这是不是意味着这个概念不好?
编辑:我不是在问为什么c/c ++使用头文件 - 我问为什么这个概念不会留在Java等新语言中.