草庐IT

returns_twice

全部标签

c++ - "Avoid returning handles to object internals",那么有什么选择呢?

EffectiveC++byScottMeyers在第5章第28项中告诉避免将“句柄”(指针、引用或迭代器)返回到对象内部,这绝对是一个好点。即不要这样做:classFamily{public:Mother&GetMother()const;}因为它破坏了封装并允许更改私有(private)对象成员。甚至不要这样做:classFamily{public:constMother&GetMother()const;}因为它可能导致“悬空句柄”,这意味着您保留对已销毁对象成员的引用。现在,我的问题是,有什么好的选择吗?想象妈妈很重!如果我现在返回Mother的拷贝而不是引用,GetMothe

c++ - C/C++ : Calling function with no arguments with function which returns nothing

为什么不能调用不带参数的函数,而函数调用作为不返回任何值的参数(恕我直言,这相当于调用不带参数但不带参数的函数)。例如:voidfoo(void){...}voidbar(void){...}foo(bar())不要误会我的意思,我知道void不是一个值,它不能被视为一个值。按照我的逻辑,这是有道理的,应该可以做到。我的意思是,为什么不呢?有什么理由认为这是不可能的吗? 最佳答案 我不相信我听到的任何理由都是好的。看,在C++中,您可以返回void函数的结果:voidfoo(){//...}voidbar(){//...return

c++ - 让我们分析一下 "collect2: ld returned 1 exit status"?

我知道这表明存在链接器问题,主要是未解析的符号。我知道要解决该问题/摆脱该错误消息,必须提供更多信息。我知道在SO上解决这个问题有很多问题。我的问题旨在帮助理解make和ld,找出什么(和谁)试图用这条线表达什么。collect2:ldreturned1exitstatus“collect2:”是什么意思?它是一个步骤make调用吗?我在我的系统上找不到具有该名称的可执行文件。这是否意味着我正在使用ld?我配置了我的项目/Makefile,以便g++应该进行链接,那么为什么仍然涉及LD谁在写这条消息?制作?ld?g++?是否有一个有意义的可能退出代码列表?

C++11 可变参数模板 : return tuple from variable list of vectors

我想写一些类似于pythonzip(http://docs.python.org/2/library/functions.html)的东西。zip应该接受可变数量的不同类型的vector,并返回一个vector元组,截断到最短输入的长度。例如x=[1,2,3]v=['a','b']我希望输出是一个vector[,]如何在C++11中做到这一点? 最佳答案 急切地做到这一点并且只通过复制非常容易:#include#include#includetemplatestd::vector>zip(std::vectorconst&...vs

c++ - 另一个C++学习时刻 : returning strings from functions

我有一些关于C++的基本问题。考虑以下我尝试返回字符串的代码。conststd::string&NumberHolder::getValueString(){charvalueCharArray[100];sprintf_s(valueCharArray,"%f",_value);std::stringvalueString(valueCharArray);returnvalueString;}我正在尝试返回一个字符串,其中包含名为_value的类成员的值。但是,我收到警告说我正在尝试将指针传回局部变量。这当然是一件坏事。如果此时我对C++有足够的了解,这意味着当有人尝试使用它时,我传

c++ - ARM C++ ABI : Constructor/destructor return values

我一直在阅读Clang源代码,并发现了一些关于ARMC++ABI的有趣之处,我似乎无法理解其理由。来自ARMABIdocumentation的在线版本:ThisABIrequiresC1andC2constructorstoreturnthis(insteadofbeingvoidfunctions)sothataC3constructorcantailcalltheC1constructorandtheC1constructorcantailcallC2.(对于非虚拟析构函数也是如此)我不确定C1、C2和C3在这里引用什么...本节旨在修改来自通用(即安腾)ABI的第3.1.5节,但

c++ - g++ 错误? ( bool 值?0 : 1) returns neither 0 nor 1

我通过这个简单的演示重现了这个问题://bool_test_func.cpp#includevoidfunc(bool*b){inta=(*b?0:1);printf("%d\n",a);//EXPECTether0or1here}//bool_test.cppvoidfunc(bool*b);intmain(){intn=128;func((bool*)&n);return0;}-O0编译运行:g++-g-O0-Wall-obool_testbool_test.cppbool_test_func.cppmikewei@maclinux:~/testing/c++$./bool_tes

c++ - 为什么在没有明确的 return 语句的情况下,递归的 return 调用会脱离堆栈?

我看到了一个示例程序来演示递归,它看起来不应该工作,但确实有效。逻辑很清楚,但为什么即使没有返回递归函数调用,它也能工作呢?即使没有请求,似乎return命令也会脱离堆栈。这是语言标准还是gcc的东西?我在Windows和Linux上看到了用gcc编译的C和C++。#include#includeusingnamespacestd;intisprime(intnum,inti){if(i==1){return1;}else{if(num%i==0)return0;elseisprime(num,i-1);//shouldbereturned}}intmain(intargc,char*

C++ 编译器错误 : "return type specification for constructor invalid"

这是我的代码。编译所有文件时出现此错误,我不确定自己做错了什么。请指教。Molecule.cpp:7:34:error:returntypespecificationforconstructorinvalid//SunnyPathak//Molecule.cpp#include#include"Molecule.h"usingnamespacestd;inlinevoidMolecule::Molecule(){intcount;count=0;}//endfunctionboolMolecule::read(){cout 最佳答案

c++ - return {} 和 return Object{} 之间的区别

这两个功能有什么明显的区别吗?structObject{Object(inti):i{i}{}inti;};Objectf(){return{1};}Objectg(){returnObject{1};} 最佳答案 第一个是copy-list-initialization,将选择合适的构造函数(即Object::Object(int))来构造返回值。第二个将通过direct-list-initialization构造一个临时Object,(也调用Object::Object(int)),然后将其复制到返回值。因为copyelisio