Chinaunix首页 | 论坛 | 博客
  • 博客访问: 201607
  • 博文数量: 37
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-23 21:00
个人简介

潜心静气。。慢慢出成果

文章分类

全部博文(37)

文章存档

2018年(5)

2017年(6)

2016年(23)

2015年(3)

我的朋友

分类: C/C++

2016-09-28 18:27:49

在C++ 中有构造函数和析构函数,是类特殊的成员函数。
构造函数:
创建对象时,根据规则自动执行。
1.函数名与类名相同,属性为public。
2.功能是对对象初始化,所以只能对class的数据成员初始化。
3.无返回类型,但不要写void 。
4,可以不定义构造函数,此时默认的构造函数为空,什么事情都不做
5.可以有多个构造函数,则此时根据参数类型来确定执行那个构造函数。
6.默认参数的构造函数,则可以缺省配置,但如果有多个构造函数时,容易引起二义性,程序报错。


析构函数:
析构函数与构造函数相反,是为了在对象生成期结束前自动执行,做数据的清理工作,如new的内存空间,需要delete掉。
1.名字为~+class name 属性为public
2.一个类只有一个析构函数。
3.没有定义时,默认析构函数为null,不做任何工作。


拷贝构造函数和默认拷贝构造函数。
对象是一个复杂的数据类型,C++中也能够将对象赋值到另外一个对象,或者用已知对象去创建另一一个对象。
对象直接的赋值或者创建则是调用了拷贝构造函数来完成的。
如CDate day1(1999,1,1),day2;
day2=day1;
CDat3 day3(day1);
fun(CDate day);
c++中三种情况会用到拷贝函数。
1.如对象直接赋值或者对象创建对象时。
2.对象作为函数形参时,函数执行过程中。
3.对象作为函数返回值类型


如果未定义拷贝构造函数,则是默认的拷贝构造函数中将数据的内存全部拷贝。
如果用户定义了拷贝构造函数,则是调用用户定义的构造函数。
代码调试:
#include
using namespace std;
class CComplex
{
public:
    CComplex(double,double);
    CComplex(CComplex &c);
    CComplex add(CComplex &x);
    void print();
    ~CComplex();
private:
    double real;
    double imag;
};
CComplex::CComplex(double x=0.0,double y=0.0)
{
    cout<<"CComplex:"<     real=x;
    imag=y;
}
CComplex::CComplex(CComplex &c)
{
    cout<<"CComplex::"<    real= c.real;
   imag=c.imag;
}
void CComplex::print()
{
    cout<<"print"<     cout<<"("< }
CComplex CComplex::add(CComplex &x)
{
    CComplex y(real+x.real,imag+x.imag);
    return y;
}
CComplex::~CComplex()
{
    cout<<"~CComplex"< }
int main(void)
{
    CComplex a(3.2,4.3),b(5.6,7.8);
    a.print();
    CComplex c(b);
    c.print();
    CComplex d=a;
    d.print();
CComplex e;
     e=a.add(b);
    e.print();
    return 0;
}
CComplex:
CComplex:
print
(3.2,4.3)
CComplex::
print
(5.6,7.8)
CComplex::
print
(3.2,4.3)
CComplex:
CComplex:
~CComplex
print
(8.8,12.1)
~CComplex
~CComplex
~CComplex
~CComplex
~CComplex


阅读(2317) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~