gpt4 book ai didi

没有标题的c++类

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:45 24 4
gpt4 key购买 nike

好的,所以我没有问题,但是有一个问题:使用 C++ 时,您可以将类传输到另一个文件并包含它而不创建头文件,如下所示:

foo.cpp :

#include <iostream>
using namespace std;

class foo
{
public:
string str;
foo(string inStr)
{
str = inStr;
}
void print()
{
cout<<str<<endl;
}
};

main.cpp :

#include "foo.cpp"
using namespace std;

int main()
{
foo Foo("That's a string");
Foo.print();
return 0;
}

那么问题来了:这种方法比使用头文件差吗?它更容易,也更干净,但是它是否更慢,是否更容易引起错误等?我已经搜索这个主题很长时间了,但我在互联网上还没有看到一个主题,考虑到这甚至是一个选项...

最佳答案

So the question is: is this method any worse than using header files?

您可能会考虑回顾“C++ 翻译单元”是什么的中心思想。

在您的示例中,预处理器所做的就像将 foo.cpp 的拷贝插入 main.cpp 的内部拷贝一样。预处理器执行此操作,而不是编译器。

所以...当它们是单独的文件时,编译器永远不会看到您的代码。提交给编译器的正是这个单一的、串联的“翻译单元”。 .hh 和 .cc 没有什么神奇之处,只是它们满足了您同事(或老板)的期望。

现在想想你的问题……翻译单元既不是你的源文件,也不是你的任何系统包含文件,而是一个文本流,一个东西,由预处理器放在一起。那么它会更好还是更坏呢?


It's much easier and much more clean,

可以。在我的“私有(private)”编码工作中,我经常采用这种“不同”的方法。

当我快速评估在阶乘中使用 gmpxx.h (mpz_class) 时,我确实采用了这些快捷方式,并且不需要 .hpp 文件来正确创建我的编译单元。仅供引用 - 12345 的阶乘超过 45,000 字节。读取字符也毫无意义。

“更正式”的努力(工作、合作等),我总是使用 header 和单独的编译,并构建一个对应用程序有用的函数库,作为工作方式的一部分。特别是如果我可能会共享此代码或为公司文件做出贡献。我有太多充分的理由来描述为什么我建议你学习这些问题。


but is it any slower, any more bug-inducing etc?

我认为不是。我想不是。有一个编译单元,连接部分必须是正确的,但我认为并不困难。


I've searched for this topic for a long time now but I haven't seen a single topic on the internet considering this even an option...

我也不确定我是否见过有人讨论过它。我已经获得了信息。单独的编译和库开发通常被认为可以节省开发时间。 (时间就是金钱,对吧?)

此外,库和头文件是您打包成功供他人使用的方式,以及您如何提高您对团队的值(value)的方式。

关于没有标题的c++类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52998389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com