инициализация по умолчанию, инициализация значения и инициализация объекта в классе не выполняются должным образом? [закрыто]

Вам может показаться, что код длинный, и я пишу много вещей, но поверьте мне, это довольно просто.

Я сослался на эти два ответа на переполнение стека, чтобы понять это. post1 и post2

Код

      #include <iostream>

class A
        {
        public:
            int k1=3;
            float f1=34.20;
            char ch1='a';
            std::string str1="bonaparte";

            void display()
            {
                std::cout<<k1<<" "<<f1<<" "<<ch1<<" "<<str1<<" xx\n";
            }

        };

class B
{
    public:
        int k2;
        float f2;
        char ch2;
        std::string str2;

        void display()
        {
            std::cout<<k2<<" "<<f2<<" "<<ch2<<" "<<str2<<" xx\n";
        }

};

A a1;
B b1;

A *p1=new A;
B *q1=new B;
int main()
{
    A a2, a3{};
    B b2, b3{};

    A *p2=new A;
    A *p3=new A{};
    A *p4=new A();

    B *q2=new B;
    B *q3=new B{};
    B *q4=new B();

    a1.display();
    a2.display();
    a3.display();
    p1->display();
    p2->display();
    p3->display();
    p4->display();

    std::cout<<"\n\n";

    b1.display();
    b2.display();
    b3.display();
    q1->display();
    q2->display();
    q3->display();
    q4->display();


}

Выход

      3 34.2 a bonaparte xx
3 34.2 a bonaparte xx
3 34.2 a bonaparte xx
3 34.2 a bonaparte xx
3 34.2 a bonaparte xx
3 34.2 a bonaparte xx
3 34.2 a bonaparte xx


0 0    xx
13965136 0 ╠  xx
0 0    xx
38872208 0 p  xx
38872208 0 p  xx
0 0    xx
0 0    xx

Класс B

- инициализированное значение инициализировано точно нулевым значением.

по умолчанию инициализировано означает, что не инициализировано.

инициализированная скобка означает инициализированное значение, которое приводит к инициализации нуля.

Я не умею создавать как (не совсем как, но вы понимаете, что я имею в виду), поскольку это приводит к определению функции, а не к объявлению объекта (самый неприятный синтаксический анализ)

Я думаю, что значение должно быть инициализировано, но после просмотра вывода оно не соответствует тому, что я думаю.

по умолчанию инициализировано означает, что не инициализировано.

инициализированная скобка означает инициализированное значение, которое приводит к инициализации нуля.

вызывает конструктор, но не существует определяемого пользователем конструктора, поэтому он должен быть инициализирован по умолчанию, что означает отсутствие инициализации.

Я знаю,,, являются указателем, но для простоты я использую вышеупомянутый язык, например. инициализируется скобка. но я думаю, вы понимаете, о чем я.

Во что я верю, , оказывается правдой, поэтому у меня нет никаких вопросов относительно того, что может быть это просто совпадение, поправьте меня, если я ошибаюсь.

Касательно , ​​, ,

что я предполагаю для Я думаю, это должно сработать для тоже, но этого не происходит, поэтому, пожалуйста, объясните это.

Касательно то, что я думаю, совпадает, поэтому нет проблем, но все же поправьте меня, если я ошибаюсь.

Теперь есть путаница с & . Я думаю, что оба призывают к конструкторам, но я не уверен. Я предполагаю, что оба вызывающих конструктора, но у нас нет определяемых пользователем конструкторов, поэтому он должен инициализироваться по умолчанию, значит неинициализированный, не так ли? Итак, как получилось, что оба значения инициализируются точно нулевым значением.

Класс А

Поэтому, если мы выполняем инициализацию в классе, независимо от того, где мы объявляем объект, он будет инициализироваться тем, что мы предоставляем, я считаю, что это правильно, но просто хочу подтвердить и, пожалуйста, добавьте, если вы хотите рассказать мне немного об этом.

0 ответов