1.对象的初始化
3 class Person
4 {
5 public:
6 char name[20];
7 char sex;
8 int age;
9 };
10
11 Person p={"Jun Ma",'F',24};//initlize
c++提供了一个构造函数,用户定义新对象的时候,c++自动的调用该函数。
构造函数与c++类名同名,构造函数没有返回值,void都不行。注意!
1.构造函数也是成员函数,可在类体内或者类体外。
2.构造函数式特殊函数,函数名与类名一样,不指定返回值类型。
3.。构造函数可以重载,因此可以定义多个参数
个数不同的构造函数。
4.构造函数在创建对象的时候自动调用。
5.构造函数不能够显示的调用。
4 class Person
5 {
6 public:
7
8 Person()
9 }
10
11 Person::Person()
12 {
13 int i;
14 return;
15 }
16 int main()
17 {
18 Person p;
19 }
析构函数。
对象同样需要被销毁,c++提供了析构函数,在对象销毁时自动调用
析构函数没有参数。
1.也可在体内和体外定义,一般定义为公有函数,如果定义为私有就不能用类创建对象了
2.析构函数可以显示的调用。对象用new动态创建(也会调用构造函数)时,用delete释放时会自动调用析构函数。
全局对象,main()执行前,调用构造函数,main结束时,调用析构函数。
局部动态对象,当程序进入作用域,在定义对象时自动创建对象,调用构造函数,在退出作用域时系统在撤销对象时,
自动调用析构函数。
局部静态对象,当程序首次到达定义对象处,系统创建对象,调用构造函数,当程序结束时,main结束时,系统
撤销对象时调用析构函数。
动态申请的对象,使用new产生对象时,系统自动调用对象,在使用delete撤销对象时,系统自动调用析构函数。
此处使用不当,可能造成内存泄露。
4 class Person
5 {
6 public:
7
8 Person(int index,int num);
9
10 ~Person()
11 {
12
13 }
14 }
15
16 Person::Person(int index,int num)
17 {
18 int i;
19 return;
20 }
21 int main()
22 {
23 Person p(1,20);
24 }
类成员公有成员在定义对象的时候可以用{}直接初始化,但是不能定义构造函数,
或者是有私有的成员。
struct Y
{
float f;
Y(int a);
};
Y y1 = {Y(1),Y(2)};
构造函数初始化列表。
3 class X
4 {
5 int i;
6 float f;
7 char c;
8 char *s;
9 public:
10 X():i(1),f(1.4),c('x'),s("howdy") {}
11
12 };
================================
class Person
{
int a ;
public:
Person(int a,int b)
{
}
};
class group
{
Person leader;
public:
group (int g1,int i,int j):leader(i,j)
{
}
};
group gp(1,2);