Всякий раз, когда мы создаем объект из класса, он создается на куче, занимающей больше места по сравнению с переменной struct, которая занимает свою память в стеке. Если я создаю класс Person и структуру P, имеющие одинаковые атрибуты, тогда это должно оправдать то, что я только что сказал. Пожалуйста, рассмотрим следующие 2 фрагменты кода:Что занимает больше места: объект или структура?
#include <iostream.h>
#include <conio.h>
#include <string>
using namespace std;
class Person{
int age;
string hair_color;
float height;
public:
Person::Person(int n)
{
age = n;
}
int Person::getAge()
{
return age;
}
};
struct P{
int age;
};
main()
{
Person person(45);
//Person *person = new Person(45);
P myPerson;
cout<<sizeof(person)<<endl;
cout<<sizeof(myPerson)<<endl;
//cout<<"Age: "<<person->getAge();
getch();
}
И когда я пишу этот код:
#include <iostream.h>
#include <conio.h>
#include <string>
using namespace std;
class Person{
int age;
string hair_color;
float height;
public:
Person::Person(int n)
{
age = n;
}
int Person::getAge()
{
return age;
}
};
struct P{
int age;
};
main()
{
// Person person(45);
Person *person = new Person(45);
P myPerson;
cout<<sizeof(person)<<endl;
cout<<sizeof(myPerson)<<endl;
getch();
}
Пожалуйста, поправьте меня, если я ошибаюсь здесь об объектах и ссылке,. Я хочу узнать из моего кода, что занимает больше места: Object или Struct?
«Всякий раз, когда мы создаем объект из класса, он создается на куче» - неправильно. «занимая больше места по сравнению со структурной переменной» - неправильно.«который занимает свою память на стеке» - неправильно. Так неправильно. Вы явно не понимаете объекты вообще. Изучите еще несколько C++ и не беспокойтесь об использовании памяти. –
Большое спасибо. Ваш комментарий оценен. –