标签: copy-constructor

复制构造函数未调用

#include <iostream>


int main(void)
{

class date {
private:
  int day;
  int month;
  int year;
public:
  date( )  { std::cout << "default constructor called" << std::endl; }
  date& operator=(const date& a) { std::cout << "copy constructor called" << std::endl; day=a.day; month=a.month; year=a.year; }
  date(int d ,int m ,int y  ) : day(d),month(m),year(y){ std::cout << "constructor called" << std::endl; }
  void p_date(){ std::cout << "day=" << day << ",month=" << month  << ",year=" << year << std::endl; }
  date& add_day(int d) …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor

0
推荐指数
1
解决办法
282
查看次数

被称为对象而不是函数c

早上好 - 这些都是我的面条烹饪了一点(同样,谷歌关于我注意到的c编程语言很难...)

void prepareFrames(PDouble prep){
  int gap = prep->gap;
  printf("Gap is %d\n", gap);
  prep->intFrames = (PFrame*)malloc(gap*sizeof(PFrame));
  PFrame copyFrame = prep->first;
  int i;
  for(i=0; i < gap; i++){
    prep->intFrames[i] = (PFrame)malloc(sizeof(Frame));
    copyFrame(prep->intFrames[i], prep->first, i);          //LINE 189
  }
}

void copyFrame(PFrame new, PFrame copy, int num){
  new->sequence = copy->sequence;
  new->evaluatedFrame = copy->evaluatedFrame + num;
  new->numBoxes = copy->numBoxes;
  new->boxes = (PBox*)malloc(copy->numBoxes*sizeof(PBox));
  int i;
  for(i=0; i < copy->numBoxes; i++){
    PBox old = copy->boxes[i];
    new->boxes[i] = (PBox)malloc(sizeof(Box));
    copyBox(new->boxes[i], old);
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

error: called …
Run Code Online (Sandbox Code Playgroud)

c pointers copy-constructor

0
推荐指数
1
解决办法
2766
查看次数

为什么C++在迭代容器时会调用复制构造函数?

void ParticleGeneratorController::generate() {
    for( unsigned i = 0; i < generators.size(); i++) {
        ParticleGenerator generator = *generators[i];
        generator.update();
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎调用了复制构造函数或其他东西,但我没有定义一个.我只有一个显式的默认构造函数.

https://github.com/ChrisLundquist/Waveform/blob/master/src/models/particle_generator.h

鉴于我的上述代码,通过测试失败.https://github.com/ChrisLundquist/Waveform/blob/master/spec/controllers/particle_generator_controller_spec.cpp#L21

写作时

void ParticleGeneratorController::generate() {
    for( unsigned i = 0; i < generators.size(); i++) {
        generators[i]->update();
    }
}
Run Code Online (Sandbox Code Playgroud)

测试通过.

为什么在第一个实现中调用了复制构造函数?它是如何由编译器生成的?

c++ copy-constructor

0
推荐指数
2
解决办法
156
查看次数

为什么这个构造函数是按原样编写的?

我们的教授在网上发布了一个自定义的"String"模板文件,并在不久前问我们填写下面的功能.我的问题是,为了尝试理解这一点,这就是为什么排名前三的构造函数Text = NULL;在其下面,以及它的this = source;其他形式.我觉得每个人都应该说Text = the_input_parameter.

非常感谢,这是代码:

class String
{
public:
    // Default constructor
    String()
    {
        Text = NULL;
    }
    String(const String& source)
    {
        Text = NULL;
        // Call the assignment operator to perform deep copy
        *this = source;     
    }
    String(const char* text)
    {
        Text = NULL;
        // Call the assignment operator to perform deep copy

        *this = text;

    }
~String()
    {
        delete[] Text;
    }

    // Assignment operator to perform deep copy
    String& …
Run Code Online (Sandbox Code Playgroud)

c++ object c-strings copy-constructor default-constructor

0
推荐指数
1
解决办法
126
查看次数

按值返回时不复制构造函数:C++

考虑一个类:

class loc{
    int x;
    int y;
    public:
    loc();
    loc(int x,int y);
    loc(const loc& l);//Copy Constructor
    loc operator + (const loc& l);
    loc operator - (const loc& l);
    loc& operator = (const loc& l);//Assignment Operator
    const loc& operator ++ ();
    friend ostream& operator << (ostream& os,const loc& l);
    friend istream& operator >> (istream& is,loc& l);
    ~loc();
    };
Run Code Online (Sandbox Code Playgroud)

当我调用Assignment运算符时:

int main()
{
loc Ob;


cout << "########\n\n";
cin >> Ob;
cout << "Ob : " << Ob;

cout << "\n\n########\n\n";

loc …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor assignment-operator

0
推荐指数
1
解决办法
158
查看次数

C++按位副本对象失败?为什么?

这个问题是关于类对象的按位复制.为什么没有调用构造函数,而是在下面的代码中调用析构函数?输出为

HowMany h2 = f(h); //没有构造函数get; s在这里调用..

after construction of h: objectCount = 1
x argument inside f(): objectCount = 1
~HowMany(): objectCount = 0
after call to f(): objectCount = 0
~HowMany(): objectCount = -1
~HowMany(): objectCount = -2




class HowMany {
    static int objectCount;
public:
    HowMany() { objectCount++; }
    static void print(const string& msg = "") {
        if(msg.size() != 0) cout << msg << ": ";
        cout << "objectCount = "
            << objectCount << endl;
    }
    ~HowMany() { …
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation copy-constructor

0
推荐指数
1
解决办法
498
查看次数

C++中是否有部分拷贝构造函数?

有没有办法在C++中实现复制构造函数,它只复制某些特定成员并为其他成员实现移动.

例如,我有一个班级

class partialCopy
{
   int a;
   int largeArray[1000] ;
}
Run Code Online (Sandbox Code Playgroud)

现在假设使用移动构造函数我想只保留largeArray两个对象之间的一个副本并使用副本我可以在同一个两个对象之间保留整数a的单独副本.

编码时可能会出现这种情况.

任何人都可以分享这个想法吗?

c++ copy-constructor move-constructor

0
推荐指数
1
解决办法
310
查看次数

为什么复制ctor的参数通过引用传递?

为什么这个论点不是通过价值传递的?

当我尝试它时,我的编译器只给了我一条消息,说"你可能意味着" Foo(const Foo&).

这是什么原因?

c++ constructor initialization copy-constructor

0
推荐指数
2
解决办法
104
查看次数

继承和删除复制和移动构造函数

我想要一个具有第三级继承的类.我不会移动我的课程或复制它们.实际上,它们只会创建一次.我想测试是否可以删除移动和复制构造函数和赋值,如下所示:

MyClass ( MyClass && ) = delete;
MyClass ( const MyClass & ) = delete;
MyClass & MyClass :: operator= ( const MyClass & ) = delete;
MyClass & MyClass :: operator= ( MyClass && ) = delete;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我在基类构造函数和基类的基础上得到一个错误:

initializing argument 1 of ‘Base::Base(const int&)’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

我的构造函数是这样的:

Base(const string & name):BaseOfBase(name){

    };
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 是否可以删除所有移动和复制构造函数和赋值运算符?
  2. 如果有可能,为什么我会收到错误?
  3. 如果可能的话,这是一个不错的选择吗?

c++ copy-constructor move-constructor c++11

0
推荐指数
1
解决办法
332
查看次数

C++拷贝构造函数,带指针

当我们定义复制构造函数时,是否需要清除我们正在编写的对象的内容?我正在实现一个二叉搜索树,并想知道我是否会有内存泄漏,除非我在实现复制构造函数和赋值运算符时清理它.

c++ copy-constructor assignment-operator

0
推荐指数
1
解决办法
113
查看次数