Что произойдет, если класс создает экземпляры всех локальных переменных в стеке (то есть: int i; //An integer
в стеке по сравнению с int *p; //Pointer to an int
), а сам класс создается в куче? Где члены класса? Вот пример:Локальное местоположение переменной переменного тока
class A {
public:
int a, b; //These are instantiated on the stack, if the line were written outside a class definition.
A(int _a, int _b) {
a = _a;
b = _b;
}
};
Теперь, если мы создаем так:
#include <iostream>
A* classA = new A(1,2);
int main(void) {
std::cout << classA.a << "\t" << classA.b << endl;
return 0;
}
Где classA.a
и classA.b
? Являются ли они в стеке программ? Автоматически помещаются в кучу, а classA
есть?
Не проблема, в большинстве случаев, я не думаю, но это может быть полезно знать ...
'a' и' b' не являются локальными переменными, они являются членами класса. –
@JonathanPotter Хорошо, я заменил локальные переменные на классы. Какая разница, кроме соглашения об именах, между прочим? В моей книге на C++ локальные переменные и члены класса взаимозаменяемы ... – PyroAVR