草庐IT

c++ - 如果我可以将所有 C++ 代码放在 .h 文件中,为什么还要使用 .cpp 文件?

如果我可以将所有C++代码放在.h文件中,为什么还要使用.cpp文件?我的意思是,如果所有代码都可以写在.h文件中,.cpp文件使用起来会很奇怪吗?任何人都可以神职吗? 最佳答案 几个原因:(1)增量构建时间当项目变大时,管理构建时间会出现问题,尤其是对于C++项目。微小变化后1或5分钟的构建会产生很大的不同。大型项目中的大多数更改都是小的并且需要大量测试来强调这一点。再加上任何TDD和重构的尝试,你就是一个穿着西西里鞋的死鼻涕虫。拆分为header和正文,并将其移至库中,极大地缩短了增量构建时间。(2)静力学对于许多事情,您需要一

c++ - 在 C++ 中命名 int 或 char 变量时, "n"或 "ch"前缀是常见前缀吗?

我目前正在浏览learncpp.com的C++教程,我看到他们的变量命名趋势是使用“n”前缀(即intnValue)和“ch”前缀为char变量(即charchOperation)命名int变量。这是不是我现在应该养成的行业普遍现象? 最佳答案 Isthissomethingthatiscommonplaceintheindustry?由于对somewhatmoreusefulconvention的误解,这种做法在二十或三十年前的Microsoft某些部门很常见。公司其他部分使用(标记变量表明它们的用途,在弱类型语言中,这有助于避免

c++ - 如何在编译时将 C 字符串转换为 int?

我希望能够将整数或double(或字符串)作为模板参数传递并且在某些情况下将结果转换为整数并将其用作模板参数输入类(class)。这是我尝试过的:templateclassA{//thefollowingworksfineintfun(){//thisfunctionshouldreturntheintintheboostmpltypepassedtoit//(e.g.itmightbeoftheform"123")returnstd::stoi(boost::mpl::c_str::value);}//thefollowingbreaksbecausestd::stoiisnotco

C++在数学计算中将double转换为int

当我写cout我得到1.5但是当我写cout我得到6。如果3.0和2.0是double值,我的结果不应该是像6.0这样的double值吗?根据什么结果是int还是double? 最佳答案 3.0*2.0的结果非常是双(a)。但是,值的呈现并不是值。你会发现6,6.0,6.00000,0.06E2,6000E-3甚至是象征性的-6(epi×i)是所有相同的值,但具有不同的表示形式。如果您不想要默认显示(b),iostream和iomanipheader具有将数字格式化为特定格式的功能,例如使用它来获取6.0:#include#incl

c++ - C++ 中的 int x=1 和 int x(1) 有什么区别?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:IsthereadifferenceinC++betweencopyinitializationandassignmentinitialization?我是C++新手,很少看到有人用这种语法来声明和初始化一个变量:intx(1);我试过了,编译器没有报错,输出结果和intx=1一样,它们真的是一回事吗?非常感谢大家。

c++ - 在 C/C++ 中通过套接字发送 int

我在通过套接字发送整数数组时遇到了麻烦。代码看起来像这样程序一:(在windows上运行)intbmp_info_buff[3];/*connectingandothers*//*Sendinformationsaboutbitmap*/send(my_socket,(char*)bmp_info_buff,3,0);程序2:(在中微子上运行)/*bufftostorebitmapinformationsize,with,length*/intbmp_info_buff[3];/*stuff*//*Readinformationsaboutbitmap*/recv(my_connect

c++ - XCode 不会破坏 #include 的 CPP 文件

如果您从另一个CPP文件中包含一个CPP文件,XCode将拒绝在包含的CPP文件中的任何断点处中断。我打算向Apple提出一个错误,但只是想在这里提及它,以防其他人遇到这个问题并可能找到解决方法。您可能希望从CPP文件中包含CPP文件,这是有充分理由的,我不会在此处详述。可以这么说,我不能简单地重新安排项目来直接编译包含的文件。示例:一个非常简单的iPhone项目ma​​in.mmexternvoidFunctionInSource1(inta);intmain(intargc,char*argv[]){FunctionInSource1(1);return0;}source1.cpp

c++ - 在 C++ 中检查 stoi() 函数中的 int 限制

这个问题在这里已经有了答案:c++parseintfromstring[duplicate](5个答案)关闭9年前。我得到了一个字符串y,我确信它只包含数字。在使用stoi函数将其存储在int变量之前,如何检查它是否超出整数范围?stringy="2323298347293874928374927392374924"intx=stoi(y);//TheprogramgetsabortedwhenIexecutethisasitexceedsthebounds//ofint.HowdoIchecktheboundsbeforeIstoreit?

c++ - 错误 C2280 : attempting to reference a deleted function (atomic<int>)

我有一个classA带有成员变量_atomicVar类型std::atomic.#includeclassA{public:A();~A();private:std::atomic_atomicVar;};如果我构建项目,我会收到以下错误:errorC2280:'std::atomic::atomic(conststd::atomic&)':attemptingtoreferenceadeletedfunction我主要是一名C#开发人员,所以我还不了解C++的每个细节(还)。我不知道我在哪里使用atomic的复制代码.我还尝试初始化_atomicVar:std::atomic_ato

c++ - 为什么不能将一个 int(代表一个 ASCII 字符)转换为一个 std::string 而不用花括号包裹 int?

intmain(){std::stringA;A+=(std::string)65;std::cout上面的代码不起作用。它会引发编译器错误。但是下面的代码有效。intmain(){std::stringA;A+=(std::string){65};std::cout当我将65括在大括号中时,它被解释为我想要的ASCIIA,但没有大括号,程序将无法运行。我还尝试将多个数字放在大括号中,如下所示:intmain(){std::stringA;A+=(std::string){65,66};std::cout这将打印出AB。我只希望有人能为我解决这个问题。 最佳