草庐IT

Questions

全部标签

c++ - 两阶段初始化的用例

我见过很多使用的两阶段初始化。理由是从辅助构造函数调用虚函数。但是,我从来没有见过任何需要这样做的用例。有吗? 最佳答案 在不支持异常的平台上,或者由于异常处理而导致的代码大小增加是NotAcceptable,两阶段初始化允许您将可能失败的事件放在辅助构造函数中。 关于c++-两阶段初始化的用例,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12653724/

c++ - 取消libcurl easy handle

有没有一种简单的方法可以从另一个线程取消curl_easy_perform? 最佳答案 您必须使用回调函数(写入/读取/进度)来执行取消。另一个线程需要设置一个标志,回调函数检查标志并返回适当的值以取消操作。 关于c++-取消libcurleasyhandle,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/235763/

C++ 重定向输出

有没有办法在代码中重定向C++输出?情况是这样的,我正在使用一些外部.cpp和.h文件,它们使用printf将警告发送到控制台。我希望“只”将这些输出(不是我的)重定向到一个文件,“而不”修改它们的代码。所以;在我的程序中,我可以将输出重定向到一个文件,当我将一些输出再次重定向到默认控制台,然后再次重定向到文件,等等...这可能吗? 最佳答案 您可以在标准输出上使用freopen()将标准输出重定向到文件。 关于C++重定向输出,我们在StackOverflow上找到一个类似的问题:

c++ - C++运行时是什么意思?

C++运行时完成的所有事件是什么? 最佳答案 它处理应用程序的启动和关闭,以及它需要运行的核心服务-例如初始化堆栈和静态变量,以及提供堆和默认内存分配器。 关于c++-C++运行时是什么意思?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1824533/

c++如何在不知道确切参数的情况下定义函数

我有一个模板函数templatevoidfoo(){//WithinthisfunctionIneedtocreateanewT//withsomeparameters.NowtheproblemisIdon't//knowthenumberofparametersneededforT(couldbe//2or3or4)autop=newT(...);}我该如何解决这个问题?不知何故,我记得看到了带有输入的函数喜欢(...,...)? 最佳答案 您可以使用可变参数模板:templatevoidfoo(Args&&...args){/

c++ - 动态分配内存

让我们考虑以下两个代码首先:for(inti=0;i第二个:for(inti=0;i峰值内存使用率几乎相同,但第二个代码的运行速度比第一个快约20倍。问题是不是因为第一个代码数组存储在堆上,第二个数组存储在堆栈上? 最佳答案 Isitbecauseinfirstcodearrayisstoredonheap,andinthesecondonearrayisstoredonstack?是的,堆栈分配要快得多,因为第二个代码示例所做的只是移动(添加/减去)堆栈指针而不是操作堆。如果想了解更多,这两个问题涵盖了主题C++Whichisfa

c++ - 以编程方式检查头文件是否存在的最佳方法?

是否只是为了测试编译一个简单的程序,其中包含该头文件#included?为了更好地理解编译过程,我正在编写自己的“配置”,它会测试一些头文件和库文件是否存在。 最佳答案 是的,使用编译器来编译你的简单测试程序。这是查看编译器是否可以找到header的最好和最简单的方法。如果您对#include搜索路径进行硬编码,您将始终需要针对不同的编译器进行修改和调整。 关于c++-以编程方式检查头文件是否存在的最佳方法?,我们在StackOverflow上找到一个类似的问题:

c++ - 虚拟模板方法有意义吗?

假设这样一个结构:classInterface{public:templatevirtualvoidreportOperationError(Tcode,std::stringmessage)=0;};我不明白这个东西的用例,在什么情况下它有用,怎么用?如果你想知道,我在任何地方都没有看到这段代码,只是想了解这是否有一些特殊用途 最佳答案 模板化的成员函数不能是虚拟的...函数的每个实例化都会向虚拟表添加另一个条目,编译器将不得不遍历所有代码以创建vtable。因此,无论它是否有用,它都是不合法的C++。

带有一些实现的c++抽象类

我想在C++中使用单个但具有一些默认实现的抽象类。这样每个继承它的类都将具有默认行为,但您不能创建基类的实例。但是,如果我将foo标记为纯虚拟,则无法向其添加实现。classBase{public:virtualvoidfoo()=0;//NowIcan'taddfooimplementation};我的解决方案是不要将其作为纯虚拟,而只是隐藏构造函数。我想知道是否可以将类标记为纯类,但仍然有一些实现? 最佳答案 你canaddanimplementationtoapurevirtualfunction.派生的类可以通过显式调用基类

c++ - 表达式 'ab' == "ab"在 C++ 中是否为真

我的问题听起来可能很愚蠢,但我必须在准备学士考试时回答这个问题。那么,您如何看待C++中的表达式'ab'=="ab"?这不是真的还是根本不合法和编译错误?我在谷歌上搜索了一下,了解到“ab”是int类型,而“ab”当然不是......我必须考虑的不是编译器所说的,而是语言的正式描述.. 最佳答案 它肯定会生成警告,但默认情况下,gcc会编译它。它通常应该是错误的。话虽如此,理论上应该可以在地址为数值等于“ab”的数值,表达式为真(尽管比较当然没有意义)。 关于c++-表达式'ab'=="