二、缺省构造函数与 缺省析构函数1、缺省构造函数C++规定,每个类必须有构造函数,没有构造函数就不能创建对象。如果在类的定义中,程序员没有设计任何构造函数,那么C++会自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它除了分配对象的实体空间外,其它什么也不做。此时,如果创建的对象是静态的或全局的,则对象中的数据初始化为0,否则将会是随机的。缺省构造函数的形式是:类名::类名(){}只要在类的定义中提供了任意一个构造函数,那么C++就不再自动提供默认构造函数。2、缺省析构函数如果在类的定义中,程序员没有设计析构函数,C++也会自动提供一个默认的析构函数,该缺省析构函数的形式是:类名::~类名(){}只要在类的定义中提供了析构函数,那么C++就不再自动提供默认析构函数。***********************************三、拷贝构造函数拷贝构造函数是一种特殊的构造函数。它的参数是本类对象的(常)引用。拷贝构造函数的功能是,将一个已经存在的对象的数据成员拷贝给正在创建的一个新的同类对象。#includeclass Point{public:Point(int x,int y){X=x;Y=y;}Point(Point &p);~Point(){cout<<"DestructorCalled."<class N{public:N(inta=3,int b=5,int c=7);intgetA(){return A;}intgetB(){return B;}intgetC(){return C;}private:intA,B,C;};N::N(int a,int b,int c){A=a;B=b;C=c;}void main(){NX,Y(9,11),Z(13,15,17);cout<class Myclass{public:Myclass(int a,int b,int c);voidprintNumber();voidprintSum();private:intA,B,C;staticint Sum;};int Myclass::Sum=0;Myclass::Myclass(int a,int b,int c){A=a;B=b;C=c;Sum+=A+B+C;}void Myclass::printNumber(){cout<<"Number="<class M{public:M(inta){ A=a; B+=a; }//构造函数,内联staticvoid f1(M m);//静态成员函数private:intA;staticint B; //静态数据成员};void M::f1(M m){cout<<"A="<#include class Point{public:Point(double xx,double yy){ x=xx; y=yy; }void printXY();friend double Distance(Point &a,Point &b);private:double x,y;};void Point::printXY(){cout<<"("<class Point{public:Point(int x,int y){X=x;Y=y;}Point(Point &p);~Point(){cout<<"DestructorCalled."<class N{public:N(inta=3,int b=5,int c=7);intgetA(){return A;}intgetB(){return B;}intgetC(){return C;}private:intA,B,C;};N::N(int a,int b,int c){A=a;B=b;C=c;}void main(){NX,Y(9,11),Z(13,15,17);cout<class Myclass{public:Myclass(int a,int b,int c);voidprintNumber();voidprintSum();private:intA,B,C;staticint Sum;};int Myclass::Sum=0;Myclass::Myclass(int a,int b,int c){A=a;B=b;C=c;Sum+=A+B+C;}void Myclass::printNumber(){cout<<"Number="<class M{public:M(inta){ A=a; B+=a; }//构造函数,内联staticvoid f1(M m);//静态成员函数private:intA;staticint B; //静态数据成员};void M::f1(M m){cout<<"A="<#include class Point{public:Point(double xx,double yy){ x=xx; y=yy; }void printXY();friend double Distance(Point &a,Point &b);private:double x,y;};void Point::printXY(){cout<<"("<
转载于:https://www.cnblogs.com/yuzaipiaofei/archive/2011/07/18/4124574.html