首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++的类的基础有关问题

2012-06-11 
c++的类的基础问题有关c++中,想问一下类中的函数是属于类的还是属于各个对象的,是不是可以理解定义一个对

c++的类的基础问题
有关c++中,想问一下类中的函数是属于类的还是属于各个对象的,是不是可以理解定义一个对象只是初始化了一些属性

[解决办法]
函数基本上是属于类的,定义的对象只负责初始化了它的内部成员--属性!

C/C++ code
class A{    int i;public:     A(){i=0;}    void Set(int j){i=j;}    int Get(){return i;}    void Disp()    {        cout<<i<<endl;    }};int main(){    A obj;    int i;    cout<<sizeof(A)<<endl;    cout<<sizeof(obj)<<endl;    cout<<sizeof(i)<<endl;    return 0;}
[解决办法]
你可以理解为所有公有的方法、属性都是这个类的接口,它们共同定义了这个类——是接口区分和定义了类;所有属于这个类的对象都会有一样的接口——一样的公有方法和公有属性,只是他们为不同的实体——类接口的实现不同。
所以函数的定义是属于类的,函数的实现,是属于实体对象的。
函数的实现,有可能是具体某种 cpu 的native instruction code,也可能是虚拟机的虚拟指令呢,因为属于同一个类的对象其实可以同时运行在不一样的平台上
[解决办法]
一般情况下,在内存中,一个类的对象的内存空间就包括类的非static成员变量,
对于存在虚函数的情况下,类的对象头部还有一个虚表指针。
对于存在虚继承的情况下,类的对象还包含一个纸箱器父类的指针。
类的static变量存储在进程的Global/Static Area。 
需要注意的是类的const成员变量没有存在const area,因为const成员变量也是对象级别的变量。
[解决办法]
探讨

一般情况下,在内存中,一个类的对象的内存空间就包括类的非static成员变量,
对于存在虚函数的情况下,类的对象头部还有一个虚表指针。
对于存在虚继承的情况下,类的对象还包含一个纸箱器父类的指针。
类的static变量存储在进程的Global/Static Area。
需要注意的是类的const成员变量没有存在const area,因为const成员变量也是对象级别的变量。

热点排行