C++ 复制构造函数中的“t”表示什么?

C++ 复制构造函数中的“t”表示什么?,c++,constructor,copy-constructor,C++,Constructor,Copy Constructor,在复制构造函数的定义中,什么是未引用的?当我在t_1的参数中传递t时,它的地址以&t的形式存储在复制构造函数中。t.a是什么意思?它是对正在复制以构建新对象的现有对象的引用。复制构造函数需要从t中读取相关字段 在您的示例中,您可能希望复制以下字段: #include <iostream> using namespace std; class tester { public: int a; tester( int x ) { a = x; } tester( tester

在复制构造函数的定义中,什么是未引用的?当我在t_1的参数中传递t时,它的地址以&t的形式存储在复制构造函数中。t.a是什么意思?

它是对正在复制以构建新对象的现有对象的引用。复制构造函数需要从t中读取相关字段

在您的示例中,您可能希望复制以下字段:

#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.a是什么意思?
因为t是对类型测试仪对象的引用。T.A是对象T的类成员A,传递给复制构造函数。

你知道多少C++?你会混淆地址和引用。我建议推荐一个。这是一个非常基础的C++问题,任何初学者的书都会消除你可能有的疑惑。@ Donotalo,这个评论的目的是什么?”史提夫:评估某人的知识水平有助于提供更好的解释。我将假设这就是Donotalo评论的要点。难道不是只有对象可以使用点运算符引用数据成员吗?不。。。如果声明了私有,那么只有tester类中的代码才能访问它。但是复制构造函数是类的一部分,因此它可以访问同一类的其他对象的成员。无论如何,A在你的例子中是公开的。史提夫:你知道C++中的引用是什么吗?如果没有,请阅读。关于您的示例:tester&t是副本构造函数中的参考。引用类似于指针,但您不能使用->访问成员,而是使用。。
tester( tester &t ) {
   cout << t.a;
   a = t.a;
}