草庐IT

指针的 C++ 模板特化?

我读了《C++Templates-theCompleteGuide》一书,学习了指针的模板特化。(可能是我对这部分书的理解有误)(1)这是我的简单模板:#includetemplatevoidFunction(constT&a){std::cout:"voidFunction(constT*a){std::cout:"我使用的是ubuntu16.04x64,g++5.3,编译器报告:$g++main.cpp-omain.exemain.cpp:10:29:error:non-typepartialspecialization‘Function’isnotallowedvoidFunct

c++ - 库的 Systemc 错误

我使用this安装了SystemC库2.3.1|教程。我写了这个helloworld示例://hello.cpp#includeSC_MODULE(hello_world){SC_CTOR(hello_world){}voidsay_hello(){cout并用这个命令编译:exportSYSTEMC_HOME=/usr/local/systemc230/g++-I.-I$SYSTEMC_HOME/include-L.-L$SYSTEMC_HOME/lib-linux-Wl,-rpath=$SYSTEMC_HOME/lib-linux-ohellohello.cpp-lsystemc-

c++ - 为什么我不能写入字符串文字,而我*可以*写入字符串对象?

如果我定义如下,char*s1="Hello";为什么我不能做下面的事情,*s1='w';//givessegmentationfault...why???如果我做下面这样的事情会怎样strings1="hello";我可以像下面那样做吗,*s1='w'; 最佳答案 因为"Hello"创建了一个constchar[]。这会衰减为constchar*而不是char*。在C++中,字符串文字是只读的。您已经创建了一个指向此类文字的指针,并正在尝试写入它。但是当你这样做的时候strings1="hello";您将constchar*"he

c++ - 为什么未实例化未调用的模板类成员?

我想知道当我创建一个类模板的实例时指定模板类型参数。1)为什么非调用函数没有被实例化?.2)在我尝试使用它们之前,它们不会被编译吗?3)这种行为背后的逻辑是什么?例子templateclasscat{public:Ta;voidshow(){coutob1;//Iknowthatshow()didnotgetinstatiated,otherwiseIwillgetanerrorsinceaisanintob1.hello();} 最佳答案 模板不是代码——它们是用于编写实际代码的模式。在您提供参数之前,模板是不完整的,因此无法提前

c++ - 结束字符 `\0`算一个字符还是两个字符?

当我试图更多地了解一些函数的行为时,我举了两个例子:charstr[]="Hello\0World"和charstr[100];scanf("%s",str);//enterthesamestring"Hello\0world"这里的问题是,在第一个示例中我得到了Hello而在第二个示例中我得到了Hello\0world为什么\和0这两个字符在第一个而不是第二个中被解释为字符串的结束字符? 最佳答案 \0是一个转义序列,虽然它在源文件中由两个字符组成,但在字符串中被解释为单个字符,即null特点。但是,这种特殊的解释只发生在源文件中

C++ 套接字 256 字节缓冲区

我正在尝试使用C++中的一些套接字网络编程。我正在尝试发送文本“HelloWorld!”使用C++send()函数发送到服务器。起初,我将缓冲区的大小设置为13,因为“HelloWorld!”总共是12个字符(你必须使它比字符数多一个)。如果我发送大约7次,发送功能只会将字符发送到服务器。当它最终到达服务器时,它看起来像这样:“HelloWorld!HelloWorld!HelloWorld!HelloWorld!HelloWorld!HelloWorld!HelloWorld!”现在是有趣的部分。“HelloWorld!”如果我将缓冲区大小设置为256(charbuffer[256]

c++ - 两个不同的 CPP 文件中的相同功能。我该如何做到这一点?

对于我的家庭作业,这是我的作业:创建5个文件。Driver.cpp、f.h、f.cpp、g.h、g.cpp。f和g应该实现一个名为hello的函数。司机应从f和g打招呼。示例输出:你好你好按任意键继续。..我创建了所有这些文件,但我不明白的是同一个函数hello()怎么会存在于两个文件中并从driver.cpp文件中调用?任何帮助将不胜感激!编辑:我得到的错误是“fatalerrorLNK1169:找到一个或多个多重定义的符号”。这是指两个hello()函数。我该如何解决这个问题? 最佳答案 全局可见的实体只能有一个定义。因此,您不

c++ valgrind在hello world中显示内存泄漏

这个问题在这里已经有了答案:PRE-2016Valgrind:Memorystillreachablewithtrivialprogramusing(3个答案)关闭4年前。我的程序代码是#includeintmain(intargc,constchar*argv[]){std::cout我是用flags编译的-Wpedantic-pedantic-errors-std=c++11-g-Wall-Wextra在上面运行Valgrind,看到一些奇怪的东西,这个简单的程序有内存泄漏,valgrind--leak-check=full--show-leak-kinds=all命令的输出是==

c++ - 什么时候 namespace::function() 声明有用?

单个文件示例这是一个使用命名空间的简单程序。#includenamespacefoo{voidhello();}voidfoo::hello(){std::cout这个程序可以很好地编译并产生预期的输出。$./a.outhello我想知道什么时候voidfoo::hello();声明有用?在这个程序中,显然这个声明是多余的。但既然存在这种语法,这在其他一些场景中一定有用吗?双文件示例这是一个示例,表明voidfoo::hello();单独声明是无用的。//foo.cpp#includenamespacefoo{voidhello();}voidfoo::hello(){std::cou

c++ - C/C++中的gettext国际化系统的性能开销

我只是阅读了http://www.gnu.org/software/gettext/manual/gettext.html的文档,而根本没有关于性能开销的讨论。在互联网上,我只发现了针对其他语言(PHP和Java)的性能讨论,而没有针对C/C++的性能讨论。因此,我的问题是:使用gettext的程序启动过程中的性能开销是什么(加载共享库?翻译如何加载到内存中?所有翻译是在启动还是按需加载的吗?)该程序正常运行期间的性能损失是多少?(即需要翻译时)程序增加的内存占用量是多少?如何组织内存?在程序空闲时将程序的某些部分交换到磁盘上是否有更高的危险/可能性?(如果翻译与程序的其余部分存储在内