讲讲c++ Session 4:构造函数、复制构造函数

第一个逗比: 构造函数:
概念:首先它是成员函数,并且名字与类名相同,可以有参数,不能有返回值(void也不行)
作用:对对象进行初始化,如给成员变量赋初值
默认:如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数,默认构造函数无参数,不做任何操作
Tips:对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数,一个类可以有多个构造函数


多个构造函数的例子:
class Complex {
private :
double real, imag;
public:
void Set( double r, double i );
Complex(double r, double i );
Complex (double r );
Complex (Complex c1, Complex c2);
};
Complex::Complex(double r, double i)
{
real = r; imag = i;
}
Complex::Complex(double r)
{
real = r; imag = 0;
}
Complex::Complex (Complex c1, Complex c2);
{
real = c1.real+c2.real;
imag = c1.imag+c2.imag;
}
Complex c1(3) , c2 (1,0), c3(c1,c2);




又一个逗比:(拷贝)复制构造函数
概念:特殊的构造函数,只有一个参数,即对同类对象的引用。
首先,我们知道他是构造函数,所以具有前面的性质。。。
例子来了:
class Complex {
public :
<span style="white-space:pre">	</span>double real,imag;
<span style="white-space:pre">	</span>Complex(){ }
<span style="white-space:pre">	</span>Complex( const Complex & c ) {
<span style="white-space:pre">	</span>real = c.real;
<span style="white-space:pre">	</span>imag = c.imag;
<span style="white-space:pre">	</span>cout << “Copy Constructor called”;
<span style="white-space:pre">	</span>}
};


什么时候会用到它呢??
答:当用一个对象去初始化同类的另一个对象时;某函数有一个参数是类 A 的对象,那么该函数被调用时;函数的返回值是类A的对象时,函数返回时。


回到上个Session,问题的答案是什么呢?
答:为该类写一个复制构造函数。
A:: A(A& r )
{
<span style="white-space:pre">	</span>w = r.w; h = r.h;
<span style="white-space:pre">	</span>nTotalNumber ++;
<span style="white-space:pre">	</span>nTotalArea += w * h;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值