gpt4 book ai didi

c++ - 构造函数初始化列表中的 'this'指针

转载 作者:IT老高 更新时间:2023-10-28 21:44:14 25 4
gpt4 key购买 nike

我想我无法理解为什么这不起作用。我一直以为我可以在构造函数中使用'this'指针,但我从来不知道我不能在初始化列表中使用'this'。

#include <iostream>

class A {
public:
int a;
int b;
A(int a = 0, int b = 0) : this->a(a), this->b(b) { }
void print() {
std::cout << a << ", " << b << std::endl;
}
};

int main() {
A a;
a.print();
}

我很想知道相关的细节。

最佳答案

仅仅因为没有必要,初始化列表已经可以消除歧义,因为它的语法是严格的:

member(value)

所以你可以把它改成:

A(int a = 0, int b = 0) : a(a), b(b) {}

this->member 仅在程序员需要帮助编译器消除歧义时才真正使用,例如,如果您的构造函数看起来像:

A(int a = 0, int b = 0) 
{
// set local 'a' to itself
a = a;
}

你的 A::a 现在不会被初始化,哎呀!

你需要 this 来帮助编译器:

A(int a = 0, int b = 0) 
{
this->a = a; // set A::a to local a.
}

关于c++ - 构造函数初始化列表中的 'this'指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41615466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com