C++这在构造函数中?

发布于 2024-11-27 11:20:42 字数 400 浏览 2 评论 0原文

可能的重复:
c++ 从构造函数调用构造函数

如何在 c++ 中进行“self”(this)赋值?

Java:

 public Point(Point p) {
        this(p.x, p.y);
    }

在 C++ 中如何做到这一点?

是否只有 this->(接受 x 的点的构造函数,接受 y 的点的构造函数); 类似?

Possible Duplicate:
c++ call constructor from constructor

How to do "self" (this) assignments in c++?

Java:

 public Point(Point p) {
        this(p.x, p.y);
    }

How would do this in C++?

Would it be similar only this->(constructor of point that takes x, constructor of point that takes y);?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

要走干脆点 2024-12-04 11:20:42

在 C++0x 中,您可以使用委托构造函数:

Point(const Point &p) : Point(p.x, p.y) { }

请注意,目前还没有编译器完全支持 C++0x;这个特殊功能尚未在 G++ 中实现。

在旧版本的 C++ 中,您必须委托给私有构造函数:

private:
    void init(int x, int y) { ... }
public:
    Point(const Point &p) { init(p.x, p.y); }
    Point(int x, int y)   { init(x, y); }

In C++0x, you can use delegating constructors:

Point(const Point &p) : Point(p.x, p.y) { }

Note that no compiler has full support for C++0x yet; this particular feature is not yet implemented in G++.

In older versions of C++, you have to delegate to a private construction function:

private:
    void init(int x, int y) { ... }
public:
    Point(const Point &p) { init(p.x, p.y); }
    Point(int x, int y)   { init(x, y); }
流绪微梦 2024-12-04 11:20:42

如果我理解这段 Java 代码的含义(依赖于同一类的另一个构造函数来完成工作的构造函数):

public Point(Point p) {
    this(p.x, p.y);
}

这就是我在 C++

class Point {

    Point(const Point& p)
       : Point(p.x, p.y) 
    {
        ...
    }
};

If I understand what you mean by this Java code (a constructor that relies on another constructor of the same class to do the job):

public Point(Point p) {
    this(p.x, p.y);
}

this is how I would express the same in C++:

class Point {

    Point(const Point& p)
       : Point(p.x, p.y) 
    {
        ...
    }
};
滿滿的愛 2024-12-04 11:20:42

如果您调用同一类的另一个构造函数,它将创建一个新对象。

如果你想这样做,你应该将构造函数逻辑放在 init 方法中,并从所有构造函数中调用它。

If you call another constructor of the same class it will create a new object.

If you want to do this, you should put the constructor logic in an init method and call it from all constructors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文