
我们应该知道C ++具有两种成员数据: 静态c 类 static 函数,非静态;三种成员函数: 静态,标准,虚拟. 实际上,对于普通成员函数,参数中有一个this指针. 该指针实际上通过该指针指向对象本身. C ++编译器将知道哪个对象调用该类的成员函数.
我们应该知道C ++具有两种成员数据: 静态,非静态;三种成员函数: 静态,非静态,虚拟.
在下面查看这种情况:
class A
{ int a; int b;
};class B
{ int a; int b; static int c;
};class C
{ int a; int b; static int c;public: void func() {} static void pg() {}
};int main()
{ //1. 分析A对象占的内存
A a; cout << sizeof(a) << endl; //结果是8
//2. 分析B对象占的内存
B b; cout << sizeof(b) << endl; //结果是8
//3. 分析C对象占的内存
C c; cout << sizeof(c) << endl; //结果是8
return 0;
}
根据输出结果,我们得出以下结论:
a. 成员变量:

b. 成员函数存储在代码段中.
实际上c 类 static 函数,对于普通成员函数(不是静态成员函数),参数中有一个this指针. 该指针实际上通过该指针指向对象本身. C ++编译器将知道哪个对象调用该类的成员函数.
我们总结:
a. C ++类对象中的成员变量和成员函数分别存储;
b. C ++类的常见成员函数(包括构造函数,但不包括静态成员函数)都包含一个指向当前对象的this指针;

c. 静态成员函数和静态成员变量属于该类;
d. 静态成员函数和普通成员函数之间的区别:
静态成员函数不包含指向特定对象的指针,普通成员函数包含指向特定对象的指针.
我们需要解决以下问题:
a. C ++类对象中的成员变量和成员函数是否存储在一起?如果没有?
b. C ++编译器如何管理类和对象,尤其是对象调用类中的方法? C ++编译器如何区分哪个特定对象调用哪个成员方法?

我们应该知道C ++具有两种成员数据: 静态,非静态;三种成员函数: 静态,非静态,虚拟.
在下面查看这种情况:
class A
{ int a; int b;
};class B
{ int a; int b; static int c;
};class C
{ int a; int b; static int c;public: void func() {} static void pg() {}
};int main()
{ //1. 分析A对象占的内存
A a; cout << sizeof(a) << endl; //结果是8
//2. 分析B对象占的内存
B b; cout << sizeof(b) << endl; //结果是8
//3. 分析C对象占的内存
C c; cout << sizeof(c) << endl; //结果是8
return 0;
}
根据输出结果,我们得出以下结论:
a. 成员变量:
b. 成员函数存储在代码段中.

实际上,对于普通成员函数(不是静态成员函数),参数中有一个this指针. 该指针实际上通过该指针指向对象本身. C ++编译器将知道哪个对象调用该类的成员函数.
我们总结:
a. C ++类对象中的成员变量和成员函数分别存储;
b. C ++类的常见成员函数(包括构造函数,但不包括静态成员函数)都包含一个指向当前对象的this指针;
c. 静态成员函数和静态成员变量属于该类;
d. 静态成员函数和普通成员函数之间的区别:
静态成员函数不包含指向特定对象的指针,普通成员函数包含指向特定对象的指针.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-209736-1.html
那干嘛南方芝麻糊赔两包芝麻糊