草庐IT

c++ - 在 C++ 中复制函数参数

我正在阅读这本名为acceleratedc++的书。对于如下所示的“复制”//error-noelementatret.end()copy(bottom.begin(),bottom.end(),ret.end());书中提到,使用ret.end()作为第三个参数是不正确的。但是ret.end()返回的是'ret'容器最后一个元素的迭代器。什么是这个论点有什么问题吗?他们建议改用“back_inserter(ret)”。为什么会这样? 最佳答案 ret.end的问题在于,尽管它指向容器末尾之后的一个,但在内存中的该位置或之后可能没有

c++ - 在 c++ 中的 fn 调用中,args 被复制到相应的参数。这是初始化还是赋值?

在C++中的函数调用中,参数被复制到相应的参数中。这是初始化还是赋值? 最佳答案 参数传递语义是初始化的语义。意思是,您的类的复制/移动构造函数将被调用。 关于c++-在c++中的fn调用中,args被复制到相应的参数。这是初始化还是赋值?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/14737680/

c++ - 在C++中,接受基类的构造函数算作复制构造函数吗?

例如:classDerived:publicBase{Derived(constBase&rhs){//Isthisacopyconstructor?}constDerived&operator=(constBase&rhs){//Isthisacopyassignmentoperator?}};显示的构造函数算作复制构造函数吗?显示的赋值运算符算作复制赋值运算符吗? 最佳答案 Doestheconstructorshowncountasacopyconstructor?没有。它不算作复制构造函数。它只是一个转换构造函数,而不是复制

c++ - 在复制赋值运算符中分配基类成员

我有一个继承自MSFT类的类,因此无法更改,我希望派生类的复制构造函数和复制赋值运算符具有相同的行为。我遇到的问题是,在复制构造函数中,您可以自由地为初始化列表中的基类调用构造函数,但在运算符中,这不是一个选项。如何在赋值运算符中正确地重新创建此行为?仅在运算符重载的主体中调用基类的构造函数就足够了吗?附加说明:基类继承自CObject,它具有operator=()和复制构造函数作为私有(private)和未实现的方法,因此不幸的是,对这些方法的任何调用都会导致编译错误。我在下面提供了一个简化的代码场景:类声明:classBase{protected:intbaseInt;public

c++ - 如何从 vector<char> 复制一个整数

我现在正在处理wav文件,我正在尝试解析它们。我暂时不想使用图书馆。我用fstream打开wav文件并将所有数据读取到vector。现在我想解析wav文件头。例如,我想获取第4到第8个字节之间的文件大小。我想将其分配给一个整数。我会用memcpy轻松完成此操作。但是因为它是C++,所以我不想使用memcpy。我最终得到的解决方案:std::vector::iteratorvectorIte=soundFileDataVec.begin();vawParams.totalfilesize=0;//SinceitislittleendianIusedreverse_copystd::rev

c++ - 显式移动构造函数是否消除了隐式复制构造函数?

我阅读了接受的答案here那:[a]copyconstructorandcopyassignmentoperatorwon'tbegeneratedforaclassthatexplicitlydeclaresamoveconstructorormoveassignmentoperator我确实注意到(g++4.7.2)如果您定义了一个移动构造函数,它将与例如push_back()一起使用,而如果您所做的只是=delete复制构造函数,你没有得到隐式移动构造函数——你得到一个错误。[...这让我想知道如果您没有明确地做任何事情,实际使用的是哪一个(移动或复制)...]然而,thison

c++ - 通过复制返回局部变量 - 它是如何工作的

给定下面的示例程序,retlocal1工作而retlocal2不工作。我知道不返回局部变量的引用或指针的规则,但我想知道它是如何工作的。当retlocal1返回时,它会将它的值复制到EAX?但是EAX是一个有足够空间容纳整数的寄存器吗?那么EAX如何保存std::string的整个拷贝(当然可以是很长的字符串)。幕后一定有什么我不明白的事吗?此示例是C++,但我假设C的工作方式完全相同?#includestd::stringretlocal1(){std::strings;s.append(3,'A');returns;}std::string&retlocal2(){std::str

C++ 将 pair<int,int> 的 vector 复制到 vector<int>

我有一个vector对,我需要将它们线性复制到一个整数vector。我有以下运行良好的代码,但考虑到C++中的结构填充问题,我不确定它是否安全。std::vector>test_vector;for(inti=0;iint_vec(test_vector.size()*2);std::copy(reinterpret_cast(&(*test_vector.begin())),reinterpret_cast(&(*test_vector.end())),int_vec.begin());现在,我的问题是-上面的代码安全吗?如果没有,是否有一种无需编写循环即可实现的优雅方法?

c++ - 将 const uint * 的值复制到 C++ 中的另一个变量

我想我有一个普遍的问题。我目前正在学习C++和SDL2.0。SDL提供了一个函数,该函数返回一个指向包含所有键状态的constuint*的指针。这些是我想使用的变量:constUint8*oldKeyState;constUint8*currentKeyState;在构建我的input.cpp时:currentKeyState=SDL_GetKeyboardState(&this->length);oldKeyState=currentKeyState;在我使用的Update()方法中:oldKeyState=currentKeyState;currentKeyState=SDL_Ge

c++继承私有(private)复制构造函数: how doesn't this yield a compile time error?

在C++中,如果我们有这个类classUncopyable{public:Uncopyable(){}~Uncopyable(){}private:Uncopyable(constUncopyable&);Uncopyable&operator=(constUncopyable&);};然后我们有一个派生类classDervied:privateUncopyable{};我的问题是:当编译器在派生类中生成默认的复制构造函数和赋值运算符时,为什么这不会生成编译时错误?生成的代码不会尝试访问基类私有(private)成员吗? 最佳答案