可以将引用看作是一个自动解引用的、不可改变的指针或是一个对象的别名。指针和引用在以下几个方面不同:为一个指针赋值会改变指针的值。为了得到一个指针,你通常需要使用new 或 &。为了访问一个指针指向的对象,你可以使用×或[].为一个引用赋值会改变引用指向的值。在初始化一个引用之后,你不能让引用指向其他对象。为引用赋值执行深度复制;为指针赋值不是这样。注意空指针。引用和指针都是通过使用内存地址来实现的。它们只是在内存地址上使用不同,为编程人员提供稍有不同的功能。 Read More
posted @ 2011-09-07 20:52
jc24
Views(155)
Comments(0)
Diggs(0)
三种强制转换:static_cast 可以用于两种相关指针类型之间的强制转换,eg void* 与 double*.void* pv;int* pi = static_cast<int*>(pv);reinterpret_cast 可以在两个不相关的类型之间转换,例如 int double*.Register* in = reinterpret_cast<Register*>(0Xff);这里告诉编译器内存中的某个特定部分用作一个寄存器。const_cast 可以“抛弃常量修饰”。void f(const Buffer* p){ Buffer*b = const_cas Read More
posted @ 2011-09-07 18:19
jc24
Views(139)
Comments(0)
Diggs(0)
double* p = new double[max];delete[] p;delete p 释放由new分配给单个对象的内存。delete[] 释放由new分配给数组对象的内存。 Read More
posted @ 2011-09-07 16:54
jc24
Views(109)
Comments(0)
Diggs(0)
类型需要析构函数的另外一个特征 是该类型具有指针成员或引用成员。如果有指针成员和引用成员,则该类型通常需要实现析构函数以及拷贝操作。通常,一个实现了析构函数的类型同时也需要实现拷贝构造函数与拷贝复制函数。作为一个经验法则:如果你有一个带有虚函数功能的类,则它需要一个虚析构函数,原因如下:1. 如果一个类有虚函数功能,它经常作为一个基类使用。2.如果它是一个基类,它的派生类经常使用new来分配。3.如果一个派生类对象使用new来分配,并且通过一个指向它的基类的指针来控制,那么它经常通过一个指向它的基类的指针来删除它。 Read More
posted @ 2011-09-07 16:20
jc24
Views(119)
Comments(0)
Diggs(0)

浙公网安备 33010602011771号