静态数据成员是一种特殊的数据成员,它属于类不属于对象,但是这个类的所有对象使用它。/***********************************第五篇***********************************/引入:一般不同对象的数据成员各自有值,互不相干;但是有时候希望某个或...
分类:
编程语言 时间:
2014-05-22 13:42:01
阅读次数:
582
C++对象模型内存布局如下:
非静态数据成员在对象之内静态数据成员在对象之外静态、非静态成员函数在对象之外类中存在虚函数时,一个类对应一个virtual table放在对象之外,对象中安插一个指针vptr指向这个表。
测试例程:
#include
using namespace std;
class A {
public:
int x, y;
static...
分类:
编程语言 时间:
2014-05-18 07:46:31
阅读次数:
234
1、重载赋值运算符=赋值运算符用于同类对象间的相互赋值。赋值运算符只能被重载为类的非静态成员函数,不能重载为友元函数和普通函数。对于用户自定义的类而言,如果没有重载赋值运算符,那么C++编译器会为该类提供一个默认的重载赋值运算符成员函数。默认赋值运算符的工作方式是按位对拷,将等到右边对象的非静态成员...
分类:
编程语言 时间:
2014-05-12 13:15:06
阅读次数:
507
0、重载一元操作符的方法一元运算符即只需要一个操作用的运算符,如取地址运算符(&)、复数(-)、自减(--)、自加(++)等。运算符重载可以分为3种方式:类的非静态成员函数、类的友元函数、普通函数。例如有
1 个操作数 a,一元运算符?(表示一个一元运算符),a? 或者?a 的操作会被解释为下面2种...
分类:
编程语言 时间:
2014-05-09 23:35:00
阅读次数:
887
1、重载二元操作符的方法二元运算符又称为双目运算符,即需要2个操作数的运算符,例如 + - * /
等。运算符重载可以分为3种方式:类的非静态成员函数、类的友元函数、普通函数。例如有 2 个操作数 a 和 b,二元运算符 ? (表示一个二元运算符),a ? b
的操作会被解释为下面2种形式之一//a...
分类:
编程语言 时间:
2014-05-09 09:51:46
阅读次数:
487
在C++的TR1中(Technology
Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类
的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。一、指向全...
分类:
其他好文 时间:
2014-05-09 03:44:32
阅读次数:
289
一。类成员: 1.数据成员和成员函数都是属于对象的。
2.C++支持另外一种类型的成员,这种成员属于类本身,而不属于类对象,我们称之为类成员。 3.使用关键字static可以创建一个类成员。
4.在类声明内部声明的static数据成员必须在任何程序块之外定义。 5....
分类:
其他好文 时间:
2014-05-01 11:18:10
阅读次数:
361
失败原因由于类的成员函数有隐含的this指针传递,从而导致一个CALLBACK型的成员函数安装时函数参数个数不匹配。解决方法1)将回调函数挪出类外,并声明为友元2)将回调函数生命为静态成员函数(使用回调函数的某个参数传递当前对象的this指针)
分类:
其他好文 时间:
2014-04-29 10:16:47
阅读次数:
362