1.1构造函数
class Time
{
public:
Time(); //无参构造函数声明
Time(int a,int b); //有参构造函数声明
}
(1).构造函数在建立对象时自动执行,且只执行一次。
(2).名字与类名相同。
(3).不具有任何类型,不具有返回值。void Time(); 是错误的。
(4).构造函数不被对象调用。t1.Time();是错误的。
(5).如果用户没有定义构造函数,系统会自动生成一个构造函数,但函数体是空的,没有参数,不执行任何初始化操作。
1.2析构函数
class Time
{
public:
Time(); //无参构造函数声明
Time(int a,int b); //有参构造函数声明
……
~Time(); //析构函数声明
}
(1).~是取反运算符。
(2)析构函数是在撤销对象占用的内存之前完成一些清理工作;static局部对象:在main函数结束或调用exit函数结束程序时,调用static局部对象的析构函数;全局对象:
在main函数结束或调用exit函数结束程序时,调用该全局对象的析构函数;new动态建对象:delete运算符释放该对象时,先调用析构函数。
(3).构造函数可有多个,但析构函数只有一个。
(4).构造函数和析构函数的顺序是栈顺序。
1.3对象数组
Student(int = 1001,int = 18,int = 60); //构造函数声明
Student stud[3] = {60, 70, 78}; //定义对象数组
这三个实参分别作为3个对象的实参。所以,在定义数组提供的实参个数不能超过数组元素个数。
1.4对象指针
(1).对象空间的起始地址就是对象的指针。
(2).
class Time
{
public:
Time(int ,int ,int); // 构造函数声明
int hour;
int minute;
int sec;
void get_time();
}