gpt4 book ai didi

c++ - 类构造函数在 C++ 中的工作原理

转载 作者:太空狗 更新时间:2023-10-29 19:48:32 25 4
gpt4 key购买 nike

我看到一个关于构造函数的在线 C++ 测试。我可以找出大部分答案,但对以下一些问题感到困惑。希望有人能帮助我。

这是例子。

#include <iostream>

class A {
public:
A(int n = 0) : m_n(n) {
std::cout << 'd';
}

A(const A& a) : m_n(a.m_n) {
std::cout << 'c';
}

private:
int m_n;
};

void f(const A &a1, const A &a2 = A())
{
}

int main() {
A a(2), b;
const A c(a), &d = c, e = b;
b = d;
A *p = new A(c), *q = &a;
static_cast<void>(q);
delete p;
f(3);
std::cout << std::endl;

return 0;
}

我真正不明白的是为什么“&d = c”不输出任何东西。还添加了另一个重载构造函数,如 A(const A *a) : m_n(a->m_n) { std::cout << 'b'; } 对于 *q = &a 也不输出任何内容。那么我该怎么做才能让它发挥作用呢?

非常感谢您的任何建议。我对此很好奇。

最佳答案

这些没有输出,因为 dq 不是 A 类型,即它们不是 A 对象。 d 是对 A引用q指向A的指针。初始化引用和初始化或分配指针根本不会操作引用/指向的 A 对象,因此没有输出。

要解决您的问题 - 没有什么可以“工作”,它会按预期工作。

关于c++ - 类构造函数在 C++ 中的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22635431/

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