C++:静态成员函数,静态数据成员,成员函数存储方式
2015-01-14 08:27
411 查看
1.同一个类的若干对象共享同一个成员函数代码段,每一个对象中都不存在这个代码段,
每个对象中只有数据成员,因此对象的大小就是数据成员总和的大小,
但是要减去static数据成员的大小,因为static数据成员不属于某一个对象,而是属于类的,
被所有的对象所共享,用sizeof(objectname)的输出可以验证。
2.由于同一个类的若干对象都引用同一个成员函数代码段,如何使同一个代码段引用不同对象的
数据成员?这就引出了this的概念,在每一个成员函数中都存在this指针,this指针指向当前的对象,
通过this指针成员函数就可以找到当前对象的数据了。
3.静态数据成员必须初始化,并且只能在类外初始化;由于静态数据成员不属于某一个对象,
因此不能通过构造函数的方式初始化静态数据成员。
4.如果定义了对象,可以通过对象名或者类名引用静态数据成员,如果没有定义对象,可以通过类名来应用静态数据成员,因为静态数据成员是属于类的,而不是单独某个对象的。
5.静态成员函数一般情况下只引用静态数据成员(特殊情况也可以通过对象名引用非静态数据成员,之所以用对象名明确地引用,是因为它没有this指针);而非静态成员函数可以引用静态数据成员和非静态数据成员。
每个对象中只有数据成员,因此对象的大小就是数据成员总和的大小,
但是要减去static数据成员的大小,因为static数据成员不属于某一个对象,而是属于类的,
被所有的对象所共享,用sizeof(objectname)的输出可以验证。
2.由于同一个类的若干对象都引用同一个成员函数代码段,如何使同一个代码段引用不同对象的
数据成员?这就引出了this的概念,在每一个成员函数中都存在this指针,this指针指向当前的对象,
通过this指针成员函数就可以找到当前对象的数据了。
3.静态数据成员必须初始化,并且只能在类外初始化;由于静态数据成员不属于某一个对象,
因此不能通过构造函数的方式初始化静态数据成员。
4.如果定义了对象,可以通过对象名或者类名引用静态数据成员,如果没有定义对象,可以通过类名来应用静态数据成员,因为静态数据成员是属于类的,而不是单独某个对象的。
5.静态成员函数一般情况下只引用静态数据成员(特殊情况也可以通过对象名引用非静态数据成员,之所以用对象名明确地引用,是因为它没有this指针);而非静态成员函数可以引用静态数据成员和非静态数据成员。
相关文章推荐
- C++:静态成员函数,静态数据成员,成员函数存储方式
- C++中RTTI动态类型识别、静态成员、变量的四种存储方式
- 《C++第七周实验报告1-1》---含有静态数据成员和成员函数的Time类:类中所有的对象共有的数据
- 关于c++的静态数据(函数)成员的理解
- 6.对数组进行排序、求最大值和求元素和的函数采用静态成员函数的方式封装成数组算法类模板ArrayAlg,并采用相关数据进行测试。
- C++ 静态数据成员 静态成员函数
- 在c++中,静态数据成员可以被非静态成员函数调用吗?如果可以调用的话那为什么还要定义静态成员函数呢
- C++中静态数据成员以及静态成员函数
- c++中的静态成员函数和静态数据成员
- C++静态成员(静态数据成员和静态成员函数)
- C++静态成员数据与静态成员函数小结
- c++ 静态数据成员和静态成员函数
- C++第七周任务【任务1】含有静态数据成员和成员函数的Time类:类中所有的对象共有的数据
- C++静态成员(静态数据成员和静态成员函数)
- C++成员函数的存储方式
- C++静态成员数据和静态成员函数小结
- 第七周c++任务一。含有静态数据成员和成员函数的Time类
- C++静态数据成员和静态成员函数
- C++静态数据成员与静态成员函数
- C++ 静态数据成员 成员函数 静态变量 全局变量(2)