C++ - 成员函数加&是什么意思?
class A{
public:
A& func1() { //这是成员函还是构造函数?加&是什么意思?是引用吗?
return *this; //*this知道是什么意思,但返回值使用了*this后,会带来什么变化 ?
}
}
在 C++ 中,成员函数后面加上 `&` 表示该函数返回类型是该类的引用。
在你给出的例子中,`A& func1()` 是一个成员函数,它的返回类型是类 A 的引用。它不是构造函数,因为构造函数的名字应该与类名相同,并且构造函数没有返回类型。
当函数返回一个引用时,你可以在函数内部使用 `return *this;`。这里的 `*this` 是一个指向当前对象实例的指针的解引用。通过返回 `*this`,你可以实现链式调用,也就是说,可以连续调用多个成员函数,而不需要将每个成员函数的返回值分配给一个变量。
例如,假设有这样一个类:
class A {
public:
A& setValue1(int value) {
value1 = value;
return *this;
}
A& setValue2(int value) {
value2 = value;
return *this;
}
private:
int value1;
int value2;
};
你可以使用链式调用来设置这个类的值:
A obj;
obj.setValue1(10).setValue2(20);
在这个例子中,`setValue1` 和 `setValue2` 都返回 `A` 类型的引用,允许你在同一行代码中调用多个函数。这种编程风格有时被称为“流畅接口”(fluent interface)。 这是一个成员函数,不是构造函数。
`A&` 表示该函数返回一个 `A` 类型的引用,其中 `&` 表示引用。
在该函数中,`return *this;` 表示返回当前对象的引用。因为该函数返回的是引用,所以调用该函数后可以继续对该对象进行操作。
使用 `*this` 返回当前对象的引用,可以实现链式调用。例如,可以使用 `obj.func1().func2().func3();` 的方式依次调用 `func1()`、`func2()`、`func3()` 函数,从而实现代码的简洁性和可读性。
需要注意的是,如果在该函数中对当前对象进行了修改,那么返回引用后,调用者也会受到影响。因此,在编写这种返回对象引用的函数时,需要小心谨慎,避免产生意外的副作用。
isdkz 发表于 2023-4-21 12:06
在 C++ 中,成员函数后面加上 `&` 表示该函数返回类型是该类的引用。
在你给出的例子中,`A& func1()`...
A func1()是返回一个A类的数据类型吗?A是一个集成多种数据类型的类,但func1()只是一个函数,A是以什么形式作为一个函数成员的数据类型??
页:
[1]