仅在CC++中使用标题时?

仅在CC++中使用标题时?,第1张

概述是否通常使用像“vec3”这样的类只有标题? 这是我的实际代码: #ifndef VECTOR3_H#define VECTOR3_H#include <math.h>class vec3{public: double x, y, z; vec3(); vec3(double x, double y, double z) : x(x), y(y), z(z) 是否通常使用像“vec3”这样的类只有标题?

这是我的实际代码:

#ifndef VECTOR3_H#define VECTOR3_H#include <math.h>class vec3{public:    double x,y,z;    vec3();    vec3(double x,double y,double z) : x(x),y(y),z(z) {}    double lenght()    { return sqrt(pow(x,2) * pow(y,2) * pow(z,2));}    double lenghtSquared()    { return pow(x,2) + pow(y,2) + pow(z,2);}    double distance(vec3 v)    { return sqrt(pow(x - v.x,2) * pow(y - v.y,2) * pow(z - v.z,2));}    double distanceSquared(vec3 v)    { return pow(x - v.x,2) + pow(y - v.y,2) + pow(z - v.z,2);}    float angle(vec3 v)    { return (float) acos(dot(v) / lenght() * v.lenght());}    double dot(vec3 v)    { return x * v.x + y * v.y + z * v.z;}    voID cross(vec3 v) {        double a = y * v.z - v.y * z; double b = z * v.x - v.z * x;        double c = x * v.y - v.x * y; x = a; y = b; z = c;}    voID normalize()    { x,z /= lenght();}};#endif // VECTOR3_H

我是否可以更好地创建源文件而不仅仅是标题?
如果你有一些提示,我喜欢他们:)

提前致谢

编辑:究竟是什么意思内联?

解决方法 如果您希望它通常可用,那么类定义需要放在标题中.如果它在源文件中,那么它仅在该源文件中可用,而在其他文件中不可用.

成员函数定义可以像你的一样内联;或者您可以将它们移动到源文件,只留下类中的声明.

两种方法都有利弊.仅标头实现更易于共享和分发,并提供更多优化机会,因为功能更容易内联;但是如果许多翻译单元中包含许多大型函数,则会导致更长的构建时间,并且如果要将其用作类接口的“文档”,则会使页眉更加混乱.

And what means inline exactly?

它意味着函数既可以在类中定义,也可以在内联声明.在任何一种情况下,其目的都是放宽“一个定义规则”,以便允许您在多个翻译单元中定义该功能;它必须在使用它的每个单元中定义.如果您希望定义出现在标题中(可能包含在多个单元中),则必须执行此 *** 作.它为编译器提供了更好的内联函数调用的机会,将其替换为函数体,以避免调用成本.

总结

以上是内存溢出为你收集整理的仅在C/C++中使用标题时?全部内容,希望文章能够帮你解决仅在C/C++中使用标题时?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存