在一个不带库的头文件中创建类和函数 你好,我想创建我自己的公共C++工具,比如自动套接字连接。但我有两种方法,我想知道哪种方法更好。 方式1: 在一个头文件中插入函数(带源代码),其他人只包含头文件并使用函数。。。 sock.h #include <iostream> class sock { public: bool create(); bool bind(); bool listen(); } inline bool sock::create() { ... } inline bool sock::bind() { ... } inline bool sock::listen() { ... } #include <iostream> class sock { public: bool create(); bool bind(); bool listen(); }

在一个不带库的头文件中创建类和函数 你好,我想创建我自己的公共C++工具,比如自动套接字连接。但我有两种方法,我想知道哪种方法更好。 方式1: 在一个头文件中插入函数(带源代码),其他人只包含头文件并使用函数。。。 sock.h #include <iostream> class sock { public: bool create(); bool bind(); bool listen(); } inline bool sock::create() { ... } inline bool sock::bind() { ... } inline bool sock::listen() { ... } #include <iostream> class sock { public: bool create(); bool bind(); bool listen(); },c++,C++,哪条路更好?(我自己选择第一种方式,因为客户端只需包含一个头文件并使用函数很容易,但在第二种方式中,客户端必须包含头文件并包含lib文件。第一种方式有问题吗?功能上没有问题。但是,通过将函数定义保留在头文件中,每次头文件er被导入到源文件中时,所有的定义都将被再次编译,这对编译时间和二进制大小都有负面影响(在某些情况下) 最好的做法是只定义一次,在可能的情况下向前声明。保持抽象的严密性 除非您使用模板类,在这种情况下,通常需要头定义。编译时间可能是个问题,没有问题。就我所记得的,头文件中的函数定

哪条路更好?(我自己选择第一种方式,因为客户端只需包含一个头文件并使用函数很容易,但在第二种方式中,客户端必须包含头文件并包含lib文件。第一种方式有问题吗?

功能上没有问题。但是,通过将函数定义保留在头文件中,每次头文件er被导入到源文件中时,所有的定义都将被再次编译,这对编译时间和二进制大小都有负面影响(在某些情况下)

最好的做法是只定义一次,在可能的情况下向前声明。保持抽象的严密性


除非您使用模板类,在这种情况下,通常需要头定义。编译时间可能是个问题,没有问题。就我所记得的,头文件中的函数定义默认是内联的,所以如果您有长的函数,您可能需要考虑第二种方法。精简类。在类之外(在头文件或实现文件中)它们需要标记为内联。优化器也可以选择内联。这真的会影响二进制大小吗?好吧,不管每个编译单元中有1个函数定义,每个二进制仍然只有1个函数定义。你是对的,我想这取决于导入函数的单元数以及它们的链接方式。那么哪种方法更适合就减少编译时间而言,不将函数定义保留在它们的头中是更好的选择。

#include "sock.h"

bool sock::create() { ... }
bool sock::bind() { ... }
bool sock::listen() { ... }