带有默认参数的构造函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于带有参数的构造函数, 在定义对象时必须给构造函 数的形参传递参数的值,否 则构造函数将不被执行。
如果构造函数的全部参数都指定了默认 值,这时的构造函数也属于默认构造函 数。一个类只能有一个默认构造函数不
能同时再声明无参的构造函数。
#include<iostream> #include<cmath> using namespace std;
double imag;
};
Complex::complex(double r,double i)
{
real=r;
imag=i; } double complex::abscomplex() {
double t; t=real*real+imag*imag; return sqrt(t); } int main() { complex s1;//系统无法识别,产生二义性 complex s2(1.1);//系统无法识别,产生二义性 complex s3(1.1,2.2); cout<<s1.abscomplex()<<endl; cout<<s2.abscomplex()<<endl; cout<<s3.abscomplex()<<endl; return 0;
错误提示
warning C4520: 'complex' : multiple default constructors specified[默认构造 函数指定多个 ] C:\Program Files\Microsoft Visual Studio\MyProjects\g\16.cpp(21) : error C2668: 'complex::complex' : ambiguous call to overloaded function 执行 cl.exe 时出错. 16.obj - 1 error(s), 0 warning(s)
#include<iostream> #include<cmath> using namespace std; class complex{ public:
complex(double r=0.0,double i=0.0);//在声明构造函数时指定默认参数值 double abscomplex(); private: double real; double imag; }; complex::complex(double r,double i)//定义构造函数 { real=r; imag=i; } double complex::abscomplex() { double t; t=real*real+imag*imag; return sqrt(t); } int main() { complex s1;//不传递参数 complex s2(1.1);//仅传递一个参数 complex s3(1.1,2.2);//传递两个参数 cout<<s1.abscomplex()<<endl; cout<<s2.abscomplex()<<endl; cout<<s3.abscomplex()<<endl; return 0;
一个类只能 有一个默认
class complex{ public:
构造函数
complex();//默认构造函数
complex(double r=0.0,double i=0.0);//在声明构造函数时指定默认参数值,亦属于默认构造函数
double abscomplex();
wenku.baidu.com
private:
double real;