网站制作时间,wordpress主题更换头部媒体,自己开公司需要什么条件,wordpress倒计时插件文章目录 【 1. 构造函数 】1.1 带参构造函数--传入数据1.2 无参构造函数--不传入数据1.3 实例1.4 拷贝构造函数 【 2. 析构函数 】 【 1. 构造函数 】 类的构造函数是类的一种特殊的成员函数#xff0c;它会 在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同… 文章目录 【 1. 构造函数 】1.1 带参构造函数--传入数据1.2 无参构造函数--不传入数据1.3 实例1.4 拷贝构造函数 【 2. 析构函数 】 【 1. 构造函数 】 类的构造函数是类的一种特殊的成员函数它会 在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的并且 不会返回任何类型也不会返回 void。构造函数可 用于为某些成员变量设置初始值。
1.1 带参构造函数–传入数据
法1
class Complex
{private: double x;double y;public:Complex(); //无参构造函数Complex(double, double); //带参构造函数void Complex_Printf(void); //输出函数
};//带参构造函数--形式1
Complex::Complex(double a, double b)
{x a;y b;
}法2
class Complex
{private: double x;double y;public:Complex(); //无参构造函数Complex(double, double); //带参构造函数void Complex_Printf(void); //输出函数
};
//带参构造函数--形式2
Complex::Complex(double a,double b) :x(a), y(b) { };1.2 无参构造函数–不传入数据
法1
class Complex
{private: double x;double y;public:Complex(); //无参构造函数Complex(double, double); //带参构造函数void Complex_Printf(void); //输出函数
};
//无参构造函数默认值x2,y1
Complex::Complex()
{x2;y1;
};法2
class Complex
{private: double x;double y;public:Complex(); //无参构造函数Complex(double, double); //带参构造函数void Complex_Printf(void); //输出函数
};
//无参构造函数默认值x2,y1
Complex::Complex() :x(2), y(1) { };1.3 实例
// 【Complex.h】
#pragma onceclass Complex
{private: double x;double y;public:Complex(); //无参构造函数Complex(double, double); //带参构造函数void Complex_Printf(void); //输出函数
};// 【 Complex.cpp 】
#include Complex.h
#include iostream
using namespace std;//无参构造函数默认值x2,y1
Complex::Complex() :x(2), y(1) {};//带参构造函数赋初值
Complex::Complex(double a, double b)
{x a;y b;
}//输出函数,根据实部x和虚部y输出对应的复数
void Complex:: Complex_Printf(void)
{if (!x !y) cout 0 endl; //{0} {0} 0else if (x !y) cout x endl; //{≠0}{0} xelse if (!x y -1) cout -i endl; //{0} {-1} -ielse if (!x y 1) cout i endl; //{0} {1} ielse if (!x) coutyiendl; //{0} {else}yielse if (x y 1) cout x i endl; //{≠0}{1} xielse if (x y -1) cout x -i endl; //{≠0}{-1} x-ielse if (y 0) cout x y iendl;//{≠0}{0} xyi ,y0else cout x y i endl; //{≠0}{0} x-yi ,y0
}// 【 Main.cpp 】
#include iostream
#include Complex.h
using namespace std;int main(void)
{Complex a;Complex b(0, 0);Complex c(0.2, 3.7);Complex d(0, 1);Complex e(2, 0);Complex f(3, -5);a.Complex_Printf();b.Complex_Printf();c.Complex_Printf();d.Complex_Printf();e.Complex_Printf();f.Complex_Printf();return 0;
}1.4 拷贝构造函数
拷贝构造函数是一种特殊的构造函数它在创建对象时是 使用同一类中之前创建的对象来初始化新创建的对象。 如果在类中没有定义拷贝构造函数编译器会自行定义一个。如果类带有指针变量并有动态内存分配则它必须有一个拷贝构造函数。拷贝构造函数通常用于 通过 使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象并从函数返回这个对象。 拷贝构造函数的常见形式
classname (const classname obj)
{// 构造函数的主体
}实例1 Line line(10); // 创建一个Line类的对象line会调用构造函数输出 “调用构造函数”display(line); // 使用 line 作为参数传入display函数中时系统首先会调用拷贝构造函数为 line 进行复制创建得到一个临时副本输出 “调用拷贝构造函数并为指针 ptr 分配内存” 系统使用该副本在 display 函数中 进行操作输出 “line 大小 10”display 函数结束后该副本作为局部变量被回收输出 “释放内存”对象 Line 在主程序结束前 也将被回收输出 “释放内存” #include iostreamusing namespace std;class Line
{public:int getLength( void );Line( int len ); // 简单的构造函数Line( const Line obj); // 拷贝构造函数~Line(); // 析构函数private:int *ptr;
};// 构造函数
Line::Line(int len)
{cout 调用构造函数 endl;// 为指针分配内存ptr new int;*ptr len;
}// 拷贝构造函数
Line::Line(const Line obj)
{cout 调用拷贝构造函数并为指针 ptr 分配内存 endl;ptr new int;*ptr *obj.ptr; // 拷贝值
}// 析构函数
Line::~Line(void)
{cout 释放内存 endl;delete ptr;
}// 成员函数
int Line::getLength( void )
{return *ptr;
}// 外部函数
void display(Line obj); // 程序的主函数
int main( )
{Line line(10);display(line);return 0;
}// 一个外部函数
void display(Line obj)
{cout line 大小 : obj.getLength() endl;
}实例2 Line line1(10); // 创建一个Line类的对象line1会调用构造函数输出 “调用构造函数”Line line2 line1; // 创建一个Line类的对象line2 且 lin2 是由 lin1 复制得到即调用了拷贝构造函数输出 “调用拷贝构造函数并为指针 ptr 分配内存”display(line1); // 使用 line1 作为参数传入display函数中时系统首先会调用拷贝构造函数为 line1 进行复制创建得到一个临时副本输出 “调用拷贝构造函数并为指针 ptr 分配内存” 系统使用该副本在 display 函数中 进行操作输出 “line 大小 10” display 函数结束后该副本作为局部变量被回收输出 “释放内存”同样地 display(line2); // 使用 line2 作为参数传入display函数中时系统首先会调用拷贝构造函数为 line2 进行复制创建得到一个临时副本输出 “调用拷贝构造函数并为指针 ptr 分配内存” 系统使用该副本在 display 函数中 进行操作输出 “line 大小 10” display 函数结束后该副本作为局部变量被回收输出 “释放内存”对象 Line1 和Line2 在主程序结束前 也将被回收分别输出 “释放内存” #include iostreamusing namespace std;class Line
{public:int getLength( void );Line( int len ); // 简单的构造函数Line( const Line obj); // 拷贝构造函数~Line(); // 析构函数private:int *ptr;
};// 构造函数
Line::Line(int len)
{cout 调用构造函数 endl;// 为指针分配内存ptr new int;*ptr len;
}// 拷贝构造函数
Line::Line(const Line obj)
{cout 调用拷贝构造函数并为指针 ptr 分配内存 endl;ptr new int;*ptr *obj.ptr; // 拷贝值
}// 析构函数
Line::~Line(void)
{cout 释放内存 endl;delete ptr;
}// 成员函数
int Line::getLength( void )
{return *ptr;
}void display(Line obj); // 程序的主函数
int main( )
{Line line1(10);Line line2 line1; // 这里也调用了拷贝构造函数display(line1);display(line2);return 0;
}// 外部函数
void display(Line obj)
{cout line 大小 : obj.getLength() endl;
}【 2. 析构函数 】 类的析构函数是类的一种特殊的成员函数 类的析构函数会在每次删除所创建的对象时执行。 析构函数的 名称与类的名称是完全相同的只是在前面加了个 波浪号~ 作为前缀它 不会返回任何值也 不能带有任何参数。 析构函数 有助于在跳出程序比如关闭文件、释放内存等前释放资源。 如果程序里没有构造函数和析构函数编译器在编译的时候会自动生成构造函数和析构函数只是函数内没有任何操作。 实例
#include iostreamusing namespace std;class Line
{public:void setLength( double len );double getLength( void );Line(); // 这是构造函数声明~Line(); // 这是析构函数声明private:double length;
};// 成员函数定义包括构造函数
Line::Line(void)
{cout Object is being created endl;
}
Line::~Line(void)
{cout Object is being deleted endl;
}void Line::setLength( double len )
{length len;
}double Line::getLength( void )
{return length;
}
// 程序的主函数
int main( )
{Line line;// 设置长度line.setLength(6.0); cout Length of line : line.getLength() endl;return 0;
}