程序清单12.3中,执行完main()时,将调用headline[0]和headline[1]的析构函数;执行完callme1 ()
时,将调用grub的析构函数。
● 如果对象是静态变量(外部、静态、静态外部或来白名称空间),则在程序结束时将调用对象的析
构函数。这就是程序清单12.3中sports对象所发生的情况。
● 如果对象是用new创建的,则仅当您显式使用delete删除对象时,其析构函数才会被调用。
2. 指针和对象小结
使用对象指针时,需要注意几点(参见图12.5):
产明招向类划象的指针
将指针初始化为已有的对象
String * glamour;
String object
String * first = Bsayings(@];
使用和默认的类构造函数
对报针进打初始化:
String * gleep . new String:
flliper lOString(const char+) String . glop = how stringi'my ny my'li
类科迎通数对带計进行初始化:
*/UnHiString(oonst stringk) String * favprite . new String(sayings|cholcel);
宽按说函数对指针进行初始化:
String object
统用操作符通我针访问
类方法:
objec
使用*解除引用操作符从指针
我神对電:
f(sayings[i].length() < shortest->length(1)
pointer to object
objec
f(sayange|il < *tirst)
object ' pointer to object
图 12.5 指针和对象
● 使用常规表示法来声明指向对象的指针:
String * glamour:
● 可以将指针初始化为指向已有的对象:
String * first = &sayings[0];
● 可以使用new来初始化指针,这将创建一个新的对象(有关使用new初始化指针的细节,请参见
图 12.6):
String * favorite - new String (sayings[choice])
● 对类使用 new将调用相应的类构造函数来初始化新创建的对象:
// invokes default constructor
String * gleep = new String:
// invokes the String (const char *) constructor
String . glop = new String ("my my my") :
// invokes the String (const String 6) constructor
String * favorite = new String (sayings[choice]) :
● 可以使用->操作符通过指针访问类方法:
if (sayings[i]. length()< shortest->length(})