C++拾遗(十)类与动态内存分配(2)

静态成员函数

声明时包含关键字static。注意以下两点:

1、使用静态成员函数时不能通过对象或者this指针来调用,只能使用类名+作用域解析符来调用。

2、静态成员函数只能使用静态成员。

 

new操作符

在使用

#include <new>

之后,new操作符可以在分配内存时指定内存位置。例如:

 1 //创建一个512字节的内存缓冲区
 2 char *buffer = new char[512];
 3 ClassName *ptr1, *ptr2;
 4 
 5 //在buffer缓冲区中创建一个类对象
 6 ptr1 = new (buffer) ClassName;
 7 //在堆中创建一个类对象
 8 ptr2 = new ClassName;
 9 
10 delete ptr1;
11 delete [] buffer;

delete ptr1调用了类的析构函数,而delete [] buffer只删除了buffer缓冲区,没有调用类的析构函数。这时候一个可行的方案是在释放buffer前显示调用析构函数。

 

嵌套

C++允许在类中包含结构、类和枚举定义。

这些类型的作用域是整个类。

这种声明不会创建数据对象,只是指定了在类的作用域中可以使用这种类型。

 

成员初始化句法

1、只能用于构造函数。

2、非静态的const成员必须这样初始化。

3、引用数据成员必须这样初始化。

4、这些成员被初始化的顺序是它们声明时的顺序,而不是在初始化列表中的顺序。

格式如下:

ClassName::ClassName(int n):mem1(n), mem2(0), mem3(null)
{
  //construct....      
}

冒号后面mem1,mem2,mem3都是ClassName的数据成员,初始化的顺序与它们在类声明中的顺序一致。

posted on 2016-05-06 19:06  DeathKnightH  阅读(174)  评论(0)    收藏  举报

导航