每當我們從一個類創建一個對象時,它就會佔用更多空間的堆上創建,而堆棧中佔用其內存的結構變量則會佔用更多空間。如果我創建一個Person類和一個struct 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();
}
請糾正我,如果我錯了,這裏有關對象和refernces。我想從我的代碼知道什麼佔據更多的空間:對象或結構?
「每當我們從類創建一個對象,它是在堆上創建」。 「與結構變量相比,佔用更多空間」 - 錯誤。「在堆棧上佔據了內存」 - 錯誤。大錯特錯。你顯然根本不理解物體。瞭解更多C++,不用擔心內存使用情況。 – 2013-10-26 16:49:09
非常感謝。感謝您的評論。 –