关于构造函数

来源:百度知道 编辑:UC知道 时间:2024/05/14 07:26:18
有的类里会有一个空的构造函数如Sample类中有Sample(){}它有什么用?
程序如下:
#include<iostream>
using namespace std;
class Sample
{
float a;
float b;
public:
Sample(){}
Sample(float x,float y){a=x;b=y;}
void mult(Sample &s)
{
if(&s==this)cout<<"自己不能相乘"<<endl;
else
{
float x=a*s.a-b*s.b;
float y=a*s.b+b*s.a;
a=x;
b=y;
}}
void disp()
{
if(b>0)cout<<a<<"+"<<b<<"i"<<endl;
else cout<<a<<"-"<<b<<"i"<<endl;
}};
int main()
{
Sample s1(2,3),s2(3,4);
cout<<"复数s1:";
s1.disp();
cout<<"复数s2:";
s2.disp();
s1.mult(s2);
cout<<"相乘结果:";
s1.disp();
cout<<endl;
return 0;
}

这个空的构造函数定义了一个默认的构造函数,使得可以这么用:
Sample a,b;
但是在本例中这个函数显然没有任何用处,而且空的默认构造函数没有对成员变量初始化,这样的函数不如不要

好象是深度搜索C++对象模型中有讲
建议不要用编译器自动建立的弱构造函数
即使什么都不做也要做一个空的构造函数

因为即使你不定义构造函数,编译器也会自动帮你建立一个,与其让编译器做后台动作,不如自己来得保险。因为不同编译器可能产生不同构造函数,如果自己写,就不会有这种情况