У меня есть вопрос в моем проекте, когда я понимаю код других людей, я нахожу странный способ, которым присваивается значение int для структуры:
TestStruct ts = TestStruct(3004);
В Teststruct есть другая подструктура SS.У SS есть только один член типа int.(оригинальный код, конечно, не похож на приведенный ниже).Я пытаюсь понять это в против кода на платформе Windows.Код ниже похож на мой проект
Мой вопрос:
- Как это возможно?Присваивание значения int структуре (это уже работает в моем проекте из кода другого коллеги).
--- update: теперь я знаю, что используемый здесь метод называется конструктором преобразования.int -> struct -> int, это верно?
Как понять перегрузку конструктора и оператора?Меня смущают следующие &, && и вещь по умолчанию ... (в исходном коде каждая структура имеет следующий подобный код:)
.
TestStruct() = default;
TestStruct(const TestStruct&) = default;
TestStruct& operator=(const TestStruct&) = default;
TestStruct(TestStruct&&) = default;
TestStruct& operator=(TestStruct&&) = default;
следующий код теста:
// 03_2 struct constructor.cpp
#include <iostream>
using namespace std;
typedef struct subStruct {
int si;
subStruct(const int si_) : si(si_){ //compile error if no this constructor
}
}SS;
struct TestStruct {
SS ss;
//constructor and operator overload
TestStruct(const SS ss_) : ss(ss_) {
}
TestStruct() = default;
TestStruct(const TestStruct&) = default;
TestStruct& operator=(const TestStruct&) = default;
TestStruct(TestStruct&&) = default;
TestStruct& operator=(TestStruct&&) = default;
};
int main(int argc, char const *argv[])
{
TestStruct ts = TestStruct(3004);
return 0;
}