Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未使用复制构造函数 我是C++新手,学习拷贝构造函数。在这个简单的示例中,我想检查显式定义的复制构造函数是否真的是活动的。我在那里放了一根绳子,但我看不出它是打印出来的_C++_Copy Constructor - Fatal编程技术网

未使用复制构造函数 我是C++新手,学习拷贝构造函数。在这个简单的示例中,我想检查显式定义的复制构造函数是否真的是活动的。我在那里放了一根绳子,但我看不出它是打印出来的

未使用复制构造函数 我是C++新手,学习拷贝构造函数。在这个简单的示例中,我想检查显式定义的复制构造函数是否真的是活动的。我在那里放了一根绳子,但我看不出它是打印出来的,c++,copy-constructor,C++,Copy Constructor,问题:我想知道,为什么不使用复制构造函数?因为在主功能体中制作了对象的副本。 Person timmy_clone = timmy; 以下是完整的代码: #include <iostream> class Person { public: int age; Person(int a) { this->age = a; } Person(const Person& person) { std::cout <&l

问题:我想知道,为什么不使用复制构造函数?因为在
主功能体中制作了对象的副本。

Person timmy_clone = timmy;
以下是完整的代码:

#include <iostream>

class Person {
public:
   int age;

   Person(int a) {
      this->age = a;
   }

   Person(const Person& person) {
      std::cout << "hello\n";
   }
};

int main() {
   Person timmy(10);
   Person sally(15);

   Person timmy_clone = timmy;
   std::cout << "timmy age " << timmy.age << " " << "sally age " << sally.age << " " <<   "timmy_clone age " << timmy_clone.age << std::endl;
   timmy.age = 23;
   std::cout << "timmy age " << timmy.age << " " << "sally age " << sally.age << " " << "timmy_clone age " << timmy_clone.age << std::endl;

   std::cout << &timmy << std::endl;
   std::cout << &timmy_clone << std::endl;

}
#包括
班主任{
公众:
智力年龄;
个人(INTA){
这个->年龄=a;
}
人员(const人员和人员){

std::cout您的代码按预期工作。请参阅


可能您混淆了哪些不适用于此处。

您的编译器标志是什么?副本可能会被优化。该代码很好,我已经尝试过,它会打印hello。适用于gcc 4.8.1您得到了什么输出,您希望得到什么输出?@KeillRandor他的示例中没有赋值,因此重写赋值运算符不会有任何效果。(当然,对于任何真正的用途,他应该要么推翻它,要么禁止它。)
   #include <iostream>

 class Array {
 public:
   int size;
   int* data;

  Array(int sz)
    : size(sz), data(new int[size]) {
  }
  Array(const Array& other)
     : size(other.size), data(other.data) {std::cout <<"hello\n";}

~Array()
{
    delete[] this->data;
}
 };


int main()
{
   Array first(20);
   first.data[0] = 25;

  {
    Array copy = first;
    std::cout << first.data[0] << " " << copy.data[0] << std::endl;
  }    // (1)

   first.data[0] = 10;    // (2)

  std::cout << "first data[0]: " << first.data[0];
}