C++对象与销毁

来源:互联网 发布:网络银行的风险 编辑:程序博客网 时间:2024/05/17 22:28

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);

 

 

 

 

 

 

 

 

 

原创粉丝点击