默认参数的构造函数
来源:互联网 发布:网络测试工具包 编辑:程序博客网 时间:2024/05/14 02:29
对于有参数的构造函数,在定义对象时必须给构造函数传递参数。实际情况中,虽然有些构造函数有参数,但其参数是不变的,这就是默认参数的构造函数。此时构造函数的形式如下:
类名(函数名)(参数1=默认值,参数2=默认值,…)
构造函数中的参数与普通函数的参数是一样的,所谓的默认参数即为该参数设置一个默认的取值。可以为全部或者部分参数设置默认值。
【示例4.11】 利用前面的point类,用带默认参数的构造函数计算(2,3)、(7,3)、(4,6)到原点的距离。
#include"iostream.h" #include"math.h" //包含头文件 class point { private: int x;int y; public: float distance() //类的成员函数 { return sqrt(x*x+y*y); } point(int a=2,int b=3) //默认参数的构造函数 { x=a;y=b; } }; void main() { point A; //全部使用默认值 point B(7); //只取一个默认值 point C(4,6); //不取默认值 cout<<A.distance()<<" "<<B.distance()<<" "<<C.distance()<<endl; }
输出结果如下:
3.60555 7.61577 7.2111
分析:上面的函数中有一个构造函数,并且该构造函数有默认值。在主函数中如果定义对象时不给出参数,则使用默认参数。如果给出部分参数,则把前面的参数改变取值,而后面的参数仍取默认值。当给定参数与形式参数个数相同时,则全部使用实参。
说明:程序中如果定义了构造函数,无论它是否带有参数,系统不会再添加构造函数。因此,如果此时的构造函数带有参数,并且没有指定默认值,那么在创建对象时必须指定参数。
【示例4.12】 利用构造函数的默认参数计算(1,3)、(4,3)两个点到原点的距离。上面的各个点的纵坐标都是3,因此可以采用默认参数。代码如下:
#include"iostream.h" #include"math.h" class point { private: int x;int y; public: float distance() //类的成员函数 { return sqrt(x*x+y*y); } point(int a,int b=3) //只要一个默认值的构造函数,默认参数在最右边 { x=a;y=b; } }; void main() { point A(1); //使用默认值 point B(4); //使用默认值 cout<<A.distance()<<" "<<B.distance()<<endl; }
分析:上面的程序是部分参数使用默认值的例子。当使用部分默认参数时,应该把拥有默认参数的参数放在参数列表的最右边,此时传递实参时可以正确地得到参数。
注意:如果将默认参数设置在参数列表的左侧,例如point(int a=3,int b),此时系统会报错。
0 0
- 默认参数的构造函数
- 默认参数的构造函数
- 默认参数的构造函数
- 带有默认参数的构造函数
- 结构体-默认参数的构造函数
- 项目一默认参数的构造函数
- 使用默认参数的构造函数
- 带默认参数的构造函数
- 【默认空参数的构造函数】
- 使用默认参数的构造函数
- C++构造函数的默认参数
- C++使用默认参数的构造函数
- C++构造函数的默认参数
- 使用默认参数的构造函数
- c++ 构造函数的默认参数
- 带参数的构造函数及使用默认参数的构造函数
- 第五周任务一之默认参数的构造函数
- 设计三角形类(使用默认参数的构造函数)
- 最适合新手看的Eclipse搭建Tomcat开发环境
- Android Service完全解析,关于服务你所需知道的一切(下)
- [NOIP模拟][审题][数据结构][bfs/dp]
- unity3D新版动画如何实现动画的融合
- for——生成新闻
- 默认参数的构造函数
- Yii基础学习
- [LeetCode]Unique Paths II
- Android Retrofit 2.0 配置OkHttpClient
- 工作第十五周:上线前的惊悚
- 机械硬盘与固态硬盘的区别
- linux内存管理-虚拟地址转换成物理地址的过程
- 两阶段提交
- Kafka:无丢失将kafka的值读取到hbase