В вашем первом примере helloness
- это глобальная переменная. Во втором примере это переменная экземпляра.
В вашей программе может быть только одна глобальная переменная с заданным именем. Существует копия переменной экземпляра для каждого экземпляра вашего класса, созданная во время выполнения вашей программы. Они семантически не похожи вообще.
Наличие глобальной переменной в заголовочном файле, как я полагаю, вы делаете в первом примере, поскольку вы ссылаетесь на #import
, это, вероятно, плохая идея. Если это не предварительное определение, как у вас (например, если вместо этого у вас было int helloness = 12;
), вы получите многозначно определенные ошибки символов во время ссылки.
В последнем примере food
все еще является глобальной переменной, но, поскольку она, скорее всего, находится в файле реализации (а не в заголовке), вы, вероятно, не столкнетесь с какими-либо многократно определенными ошибками символов. Однако не будет работать как переменная экземпляра - это все еще глобальная переменная.