在实践中,API只是某些现有(参考或样本)实现的文档化界面。
理论上,人们可以抽象地设计API。在没有任何实现的情况下实际执行此操作是一个代价高昂的错误(因为没有实现,您将不会考虑很多细节)。
另请阅读undefined behavior。
请注意,纯标准C++11没有提供与外界交互的太多内容:C ++ 11标准不了解目录,键盘,鼠标,屏幕,声音,网络,GUI等。您的操作系统可能具有更多相关的附加特定库。了解有关POSIX的更多信息,可以将其理解为操作系统服务的standardized API(遗憾的是,MicroSoft销售的一些专有操作系统本身并不符合POSIX标准;据传,您可能会在其Windows操作系统中购买一些类似POSIX的界面,拥有Windows API)。
如果要实现某些功能,则需要熟悉目标平台,即要支持的操作系统。对于Linux,开始阅读Advanced Linux Programming,intro(2),syscalls(2),intro(3)等...并详细研究与您的目标相关的free software实现的源代码(参见例如sourceforge ......)。
如果您想要跨平台(例如能够在Linux和MacOSX上编译相同的代码),更好地利用和利用现有的跨平台框架,如Qt或POCO,或(如果它们与您的需求相关)libsdl或者SFML。这些框架使用一些特定于操作系统的API(并尝试在它们之上定义一些常见的抽象)。
PS。在实践中,设计一个好的API是一项困难的艺术。记录它是必不可少的。如果可能的话,让你的实现免费软件,并尝试获得建议和帮助。