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

来源:互联网 发布:淘宝卖家用什么软件好 编辑:程序博客网 时间:2024/05/19 16:20
第一个逗比:构造函数:
概念:首先它是成员函数,并且名字与类名相同,可以有参数,不能有返回值(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
原创粉丝点击