"t"在复制构造函数中表示什么?

what does ' t ' denote in copy constructor?

本文关键字:表示 什么 构造函数 复制      更新时间:2023-10-16
#include <iostream>
using namespace std;
class tester {
public:
int a;
tester( int x ) {
    a = x;
}
tester( tester &t ) {
    cout << t.a;
}
};
int main() {
 tester t(10);
 tester t_1(t);
}
output : 10
在复制构造函数的定义中,t指的是什么?当我在t_1的参数中传递t时,它的地址在复制构造函数中以&t的形式存储。t.a是什么意思

这是对现有对象的引用,该对象正在被复制以构造新对象。复制构造函数应该根据需要从t中读取相关字段。

在您的示例中,您可能希望像这样复制a字段:

tester( tester &t ) {
   cout << t.a;
   a = t.a;
}

在复制构造函数中,t是对tester类型对象的引用。

复制构造函数是复制函数。它创建一个类的对象的副本,所以它接受那个类的对象作为参数。调用这个复制构造函数是为了在函数调用等过程中按值调用对象时创建对象的临时副本。

为什么这个参数是由Reference传递的?
在复制构造函数中作为引用传递参数的原因是为了避免在按值传递时递归调用复制构造函数。(因为复制构造函数本身就是创建临时对象的函数)

t.a是什么意思
因为t是对tester类型对象的引用。t.a是传递给复制构造函数的对象ttester类中的成员a