2015-03-18 3 views
1

У меня есть код C, который мне нужно понять. СуществуетОпределение функции в C struct?

typedef struct someStruct { 
    int i; 
    char c; 
    someStruct() { 
     i = 0; 
     c = 'c'; 
    } 
    someStruct(char inpChar) { 
     i = 1; 
     c = inpChar; 
    } 
} t_someStruct; 

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

+14

Это скорее всего код C++, а не код C. –

+0

в C++, структура - это тип класса, и этот код будет работать, но не на C. Если вы хотите что-то подобное в C - см. Https://stackoverflow.com/questions/17052443/c-function-inside-struct –

+0

Если он не компилируется на вашем компиляторе C, скорее всего, он недействителен. C. – Lundin

ответ

7

Ваш код недопустим Код C (то есть действительный C11) код, но он действительно C++ (то есть C++14).

В C++ struct похож на class, за исключением того, что все члены по умолчанию public; см., например, here.

3

Там нет Конструкторы в C.

Этот код, скорее всего, в C++. В C++, struct на самом деле похож на class, следовательно, вы можете определить конструкторы для структур в C++.

Попробуйте скомпилировать ваш код в gcc. Вы получите

error: expected specifier-qualifier-list before ‘someStruct’ 
0

Основное отличие между C и C++ состоит в том, что C++ поддерживает класс, а C - нет. В C++ struct является специальным классом, поэтому приведенный выше код будет работать в C++, но не в C.

Смежные вопросы