gpt4 book ai didi

c++ - 为什么类类型的成员需要初始化?

转载 作者:行者123 更新时间:2023-12-02 01:38:45 25 4
gpt4 key购买 nike

我正在阅读有关 C++ 中的构造函数的内容。我遇到过这个例子:

#include <iostream>

using namespace std;

class NoDefault
{
public:
NoDefault(const std::string&);
};

struct A
{
NoDefault my_mem;
};

int main()
{
A a;
return 0;
}

它在编译时给出以下消息:

main.cpp:26:7: error: use of deleted function ‘A::A()’

我可以直观地感觉到默认的ctor被删除了,因为struct A内部有一个class type的成员。我想问为什么需要初始化类类型成员?我们不能让它处于未初始化状态吗?

也许是一个非常微不足道的问题,但我很好奇这样设计背后的想法?我是面向对象编程的新手。

最佳答案

A a; 执行 default initialization ; a 获得默认初始化,其成员 my_mem 也获得默认初始化。对于类类型,这意味着将使用默认构造函数进行初始化,但 NoDefault 没有它,这会导致错误。 (内置类型的行为是不同的。在默认初始化中,它们可能会被初始化为不确定的值。)

关于c++ - 为什么类类型的成员需要初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71935601/

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