gpt4 book ai didi

c++ - 构造函数中的 Const 参数导致 stackoverflow

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:58 27 4
gpt4 key购买 nike

我在 VS2005 C++ 编译器中发现了这种奇怪的行为。这是情况:

我无法发布代码,但情况很简单。

这是初始代码:它完美地工作

class Foo {
public:
Foo(Bar &bar) { ... }
}

构造函数实现存储了一个引用,设置了一些成员……确实没什么特别的。

如果我按以下方式更改代码:

class Foo {
public:
Foo(const Bar &bar) { ... }
}

我已经为唯一的构造函数例程参数添加了一个 const 限定符。

它编译正确,但编译器输出警告说例程 Foo::Foo 将导致堆栈溢出(即使执行路径没有构造任何对象 Foo);这实际上发生了。

那么,为什么没有 const 参数的代码可以完美运行,而带有 const 限定符的代码却导致堆栈溢出?什么会导致这种奇怪的行为?

最佳答案

尝试使用 explicit 关键字?

我的猜测是,使用 const,您将声明从 Bar 到 Foo 的自动转换;如果您已经有任何类似的从 Foo 到 Bar 的自动转换,那么会溢出吗?

关于c++ - 构造函数中的 Const 参数导致 stackoverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934395/

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