构造函数的含义和作用,复制构造函数

来源:互联网 发布:告白软件生成器 编辑:程序博客网 时间:2024/06/05 23:04

  构造函数的作用:在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态。

  构造函数的性质:构造函数的函数名与类名相同,没有返回值

                               一般存放在公有类型中;

  例:

class people

{

  public:

      people(int page,char pname[]);         //声明构造函数

  private:

         int age;

       char name[];

};


people::people(int page,char pname[]):age(page),name(pname){}//定义构造函数



   复制构造函数 写法:类名(类名 &对象名);

 例:

class people

{

  public:

      people(int page,char pname[]);         //声明构造函数

     people(people &p);             //声明复制构造函数

  private:

         int age;

       string name[];

};


people::people(int page,char pname[]):age(page),name(pname){}        //定义构造函数

people::people(people &p)                 //定义复制构造函数

{

age=p.age;

name[]=p.name[];

}

复制构造函数的调用地点:

1.当用类的一个对象去初始化该类的另一个对象

例: 

  people a(17,Mike);

  people b(a);

2.如果函数的形参是类的对象,调用函数时,进行形参和实参结合时

例:

int main()

{

people a(17,MIke);

f(a);

return 0;

}

void f(people j)

{

省略>>>>>>>>>>>>>>>>>

}

3.函数的返回值是类的对象时

类名       函数名(形参)

{

省略》》》》》》》

return  对象名;

}

源文件如下:

#include<iostream>
using namespace std;
class Tree {
public:
int grow(int years);
void age();
Tree(int x)
{
ages = x;
}
Tree(Tree &p);
~Tree() { cout << "析构函数被调用" << endl; }
private:
int ages;
};


Tree::Tree(Tree &p)
{
ages = p.ages;
cout << "复制函数被调用" << endl;
}
int Tree::grow(int years)
{
return  ages+ years;
}
void Tree::age()
{
cout << "put tree's year :\n" << grow(2)<<" years"<< endl;
}
int main()
{
Tree Tree1(4);
Tree Tree2 = Tree1;
Tree2.age();
return 0;
}

原创粉丝点击