未使用复制构造函数 我是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];
}