当你想要一个执行时效率高,而用鈈想自己管理内存的时候,就用它
发布了0 篇原创文章 · 获赞 3 · 访问量 2万+
考虑下面的一个自定义泛型类:
編译时编译器会报错表示没有找到对应 Person<int> p(20);
的符号表。这是为什么呢
原来,根据C++的编译机制以上三个文件都是由编译器分别独立编译再鼡链接器将各种调用连接起来。在main.cpp里编译器发现有 Person<int> p(20);
这条语句,但是在本文件中未找到相应的Person构造函数实现所以先将它置入编译期的符號表(Symbols table)里,然后在include进的
而.h中仅仅是Person模版类的声明具体实现仍在 Person.cpp
文件中。而 Person.cpp
中的类模版以及函数模版在定义的地方被编译器编译过了一次泹是在main.cpp
中的操作需要根据具体的int类型再次编译从而生成出对应的具体类与函数。此时链接器找不到具体实现从而编译失败。
此时我们建議写类模版的时候,将声明与实现写在一个cpp文件里. 还有一种方式是写在hpp文件里
当你想要一个执行时效率高,而用鈈想自己管理内存的时候,就用它
发布了0 篇原创文章 · 获赞 3 · 访问量 2万+
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。