首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将一个C++对象传递给它自己的构造函数合法吗?

将一个C++对象传递给它自己的构造函数合法吗?
EN

Stack Overflow用户
提问于 2015-09-16 20:20:57
回答 1查看 8K关注 0票数 113

我很惊讶地意外地发现以下方法是有效的:

代码语言:javascript
复制
#include <iostream>            
int main(int argc, char** argv)
{
  struct Foo {
    Foo(Foo& bar) {
      std::cout << &bar << std::endl;
    }
  };
  Foo foo(foo); // I can't believe this works...
  std::cout << &foo << std::endl; // but it does...
}

我将构造的对象的地址传递给它自己的构造函数。这看起来像是源代码级别的循环定义。标准是否真的允许您在对象构造之前将对象传递到函数中,或者这是未定义的行为?

我想这并不奇怪,因为所有的类成员函数都已经有一个指向其类实例的数据的指针作为隐式参数。并且数据成员的布局在编译时是固定的。

注意,我并不是在问这是不是有用或者是一个好主意;我只是修修补补地学习更多关于类的知识。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32608458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档