使用头文件来代替使用cpp文件和.lib

时间:2017-08-06 04:54:52

标签: c++

你好我在c ++中有这样的代码:

#include <iostream>

using namespace std;

namespace exercises
{

class String;
ostream& operator<<(ostream&, const String&);
istream& operator>>(istream&, String&);

class String
{
public:
    explicit String(const char* str_="");
    ~String();

    String(String const &oStr_);    

    String& operator=(const String& oStr_);
    String& operator=(const char* oStr_);

    bool operator==(const String& oStr_)const;
    bool operator<(const String& oStr_)const;
    bool operator>(const String& oStr_)const;   

    char operator[](std::size_t)const;
    char& operator[](std::size_t);  

    const std::size_t Len()const;   
    const char* CStr()const;

private:
    char* m_str;
};

}

但我不知道一件事。我可以在这个代码头文件中设置所有函数(带有源代码),它完全可以工作,所以当人们可以设置头文件中的所有源并只包含头文件并享受它时,为什么人们使用.lib文件?我知道一件事:头文件用于声明而.cpp用于源代码,因为如果你在头文件中设置source你可能会得到一些未定义的错误(但我没有)因此,重要的是我在cpp中设置我的soruces文件或只是我可以使用头文件来源?

1 个答案:

答案 0 :(得分:0)

你不能多次定义相同的函数/类,因此它可能不会给你一个编译错误,因为你只包含一次标题,但是如果你将它再次包含在另一个标题中它会给你您的类/函数已定义的错误。必须在头文件中定义模板化的类或函数,编译器将通过proccess运行,它将填充所有使用过的模板参数。