CZдPڽYwĴ惦gСDZ^Ԓ}漰ӋCĻԭϵyJ錦RCZܶW߶òĆ}eڿƽ_rR@N}ӵďs׃ÿһNϵyԼصČRʽWindowsнԽYw͵Ĵ惦Ԫֹ錦RĻLinuxеČR4ֹR
ôC++еăȴgСЩĆ}
J錦R϶ҲеĆ}֮һRҪǞ˼ӿxȡٶ
PڌR@JѽDzϵyȶõȻLinuxcWindowsڲeôC++PڌR϶ҲһIJePڌRJֻҪӛסƽrʹõϵyČRʄtͿWindowsнԽYw͵Ĵ惦Ԫֹ錦RĻLinuxеČR4ֹR
J͑ԓӑՓڻЩɆTռд惦gЩɆTռÃȴg
C++ռ惦^gҪǷstaticĔҪNõĔеĺԼxȴgҪעеvirtual̓һȴ^һf4ֹʲôֻǰstaticstaticκһČǾwijһČȴ^ֻһȴ^惦staticҲе@Բwijһ͵ăȴg
˿JĴ惦gС飺
staticɆTĴС + 4 ֹ̓Ĵ惦g
Ȼ@СДɆTСįBǴһR}wđԓPČR
J϶ҪPһĴ惦g
C++^һ^õ^ʹøNڻĻAϔUչ@rа˻Ϣһڻд̓r^˻̓ѽ^̓^в̓Ĵ惦gе̓һKȴ^HHҪ]MķstaticɆTăȴgС
˿JĴ惦gС飺
惦g + еķstaticɆTĴ惦g
߀һDZ^r̓^еr@rĴ惦gС͕l׃
Ĵ惦g + еķstaticɆTĴ惦g + ÿһ̓惦g
ҲһЩfĆ}
RĆ}
class test
{
public:
test();
private:
int a;
char c;
};
cout << sizeof(test) << endl;
ĴalinuxԼwindows¶ݔ8ݔ5@CZѽӑՓ^Ԓ}fRC++ҲҪ]PڲϵyIJںһyһf
̓}
ӑՓ̓҂testһ̓ȻٜyԇY
class test
{
public
test();
virtual ~test();
private:
int a;
char c;
};
cout << sizeof(test) << endl;
@δacǰĴa]ʲô^eֻһ̓Ȼg{ԇ@rݔĽY12Ҳfһ̓ԺĔɆT4ֹôǷÿһ̓ռ4ֹ䌍Dztestмһµ̓virtual void get_a_c(),@rݔĽY߀12@fе̓4ֹ
static
҂֪staticǷnjČČijһ͵Ĵ惦gxֻʼֻȻ@ҲwĴ
Ĵ惦g
Ļ^˺ܶɆTԼҲӺܶijɆT̓Ҳ^Ծв@ʽx̓ҲڏĻ^̓̓Ҫ~ӋȴgֻҪӻķstaticɆTСxʾԓݔ20ӵķstaticdouble dĴ惦gСCķ
class test
{
public:
test();
virtual ~test();
virtual void get_a_c();
private:
int a;
char c;
};
class derived_test:public test
{
public:
virtual ~derived_test();
private:
double d ;
};
cout << sizeof(derived_test) << endl;
yԇ̓^еĴ
class A
{
char i[3];
public:
virtual void a(){};
};
class B : public virtual A
{
char j[3];
public:
virtual void b(){}
};
class C: public virtual B
{
char k[3];
public:
virtual void c(){}
};
int main()
{
cout << "sizeof(A): " << sizeof(A) << endl;
cout << "sizeof(B): " << sizeof(B) << endl;
cout << "sizeof(C): " << sizeof(C) << endl;
return 0;
}
һ^Cϵfһ²ϵyԼNCϵӰ푷
#include <iostream>
#include <string>
#include <vector>
class test
{
public:
test();
virtual ~test();
virtual void get_a_c();
private:
int a;
char c;
};
class derived_test:public test
{
public:
virtual ~derived_test();
private:
double d ;
};
class base
{
private:
char a;
static int refrence_count;
std::string name;
double price;
std::vector<double> dvec;
public:
base();
virtual ~base();
static int get_count();
};
int base::get_count()
{
return refrence_count;
}
int base::refrence_count = 0;
class new_base
{
private:
char a;
double price;
std::vector<double> dvec;
std::string name;
static int refrence_count;
public:
new_base();
virtual ~new_base();
static int get_count();
};
int new_base::get_count()
{
return refrence_count;
}
int new_base::refrence_count = 0;
class derived: public base
{
private:
int min_qty;
double discount;
static int newp;
public:
derived();
virtual ~derived(){};
};
class new_derived:public new_base
{
private:
double discount;
int min_pty;
static int newp;
public:
new_derived();
virtual ~new_derived(){}
};
int main()
{
std::cout << "The size of test is " << sizeof(test) << std::endl;
std::cout << "The size of derived_test is " << sizeof(derived_test) << std::endl;
std::cout << "The size of base is " << sizeof(base) << std::endl;
std::cout << "The size of new_base is " << sizeof(new_base) << std::endl;
std::cout << "The size of derived is " << sizeof(derived) << std::endl;
std::cout << "The size of new_derived is " << sizeof(new_derived) << std::endl;
return 0;
}