构造函数的作用:在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态。
构造函数的性质:构造函数的函数名与类名相同,没有返回值
一般存放在公有类型中;
例:
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;
}