gpt4 book ai didi

C++:定义类函数的 .cpp 文件中实例本身的表示关键字

转载 作者:行者123 更新时间:2023-11-28 00:51:59 25 4
gpt4 key购买 nike

例如,我创建了一个名为 Circle 的类,并将其定义在 Circle.h 中。

class Circle {
public:
Circle *parent;

Circle();
};

在与 Circle.h 相同目录下的单独的 Circle.cpp 文件中,我定义了构造函数。

Circle::Circle() {
// creates a root circle, parent is set to itself
*parent = ????
}

????部分应该填什么?在 AS3 中,我知道您可以在定义类的函数时使用 this 关键字来表示实例本身。你在 C++ 中使用什么?

编辑 2012/11/29 23:56

还有一个构造函数:

Circle(Circle*);

Circle::Circle(Circle *cParent) {
*parent = *cParent;
}

一个函数在被调用时会创建一个新的 Circle 实例并将新实例的 *parent 设置为调用者。

void addChild();

void Circle::addChild() {
Circle child(????);
}

???? 仍然是那个神秘的部分。根据我阅读的资源,this 似乎已被弃用或具有其他含义?

最佳答案

您要查找的关键字是this;它是指向调用函数的实例的指针。在您的示例中,您将像这样使用它:

Circle::Circle()
{
parent = this;
}

注意必须是parent = this;不是 *parent = this;。后者将分配给 parent 指向的对象,这是无效的(parent 具有不确定的值)。幸运的是,它不会编译,因为您会将指针分配给对象。

对于这种情况(在构造函数中初始化数据成员),C++ 具有初始化语法,通常更喜欢在构造函数主体中分配成员。代码将如下所示:

Circle::Circle()
: parent(this)
{}

关于C++:定义类函数的 .cpp 文件中实例本身的表示关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13628356/

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