示例代码
#include <iostream> using namespace std; class ClassTest { public: ClassTest( int s ): elem{ new int[s] }, size{ s } { } ClassTest( ): elem{ new int[1] }, size{ 1 } { } ~ClassTest() { cout << "delete Object\n"; delete[] elem; } private: int *elem; int size; }; int main() { ClassTest A( 6 ); ClassTest B; return 0; }
构造函数
与类同名的函数,在类进行定义是会自动执行,可使用成员初始化器列表初始化成员,例如:
ClassTest( int s ):elem{ new int[s] },size{ s } { }
表示为ClassTest类的elem指针申请s个int大小的空间,并将size值置为s。
定义ClassTest类的变量A时使用:
ClassTest A(6);
构造函数可定义多个,编译器将会根据参数个数和类型进行初始化,如:
ClassTest( int s ):elem{ new int[s] },size{ s } { } ClassTest( ):elem{ new int },size{ 1 } { }
可使用下面的代码表示默认申请一个int大小的空间给elem,并设置size为1。
ClassTest A( );
析构函数
与构造函数对应,~后接类名的函数叫析构函数。析构函数在对象消亡时会自动调用,用于对对象申请空间的释放。例如:
~ClassTest() { cout << "delete Object\n"; delete[] elem; }
当程序结束时会自动将A和B申请的空间释放。