C++之带有默认参数值的构造函数
来源:互联网 发布:java跳转页面代码 编辑:程序博客网 时间:2024/06/06 03:20
在一个类中 ,如果程序员没有写,任何一个构造函数,则编译器将为该类提供一个默认的构造函数,如果程序员对类的构造函数进行了重载,则编译器将不提供默构造函数,这里需要手动书写一个无参的构造函数,
无参的构造函数,也就是默认构造函数,
默认构造函数分为两种:
1、不含有参数的默认构造函数
2、带有默认参数值的构造函数
在这里主要说的是带有默认参数值的构造函数的使用及注意事项:
定义方法示例:
class Circle{
public:
Circle(int a=1,int b=2,int c=3){//本构造函数是带默认值的默认构造函数
x=a;
y=b;
z=c;
}
private:
int x;
int y;
int z;
};
一个类中,一旦定义了带有默认值的构造函数,便可以直接使用,使用方式主要有以下几种:
在这里仍使用上面的例子,进行演示:
Circle c1;//调用默认构造函数,此时,类中的私有属性,分别初始化为x=1、y=2、z=3;
Circle c2(5);//调用默认构造函数,此时,类中私有属性,分别初始化为x=5、y=2、z=3;
Circle c2(5,6);//调用默认构造函数,此时,类中私有属性,分别初始化为x=5、y=6、z=3;
Circle c2(5,6,7);//调用默认构造函数,此时,类中私有属性,分别初始化为x=5、y=6、z=7;
当函数中定义了带有默认值的构造函数,在进行构造函数重载时,就不能任意的进行重载,即其它构造函数的参数,与之对用的位置,不能与带有默认值的构造函数相同。如果不明白,可以看下面这个例子:
class Circle{
public:
Circle(int a=1,int b=2,int c=3){//本函数是带默认值的默认构造函数
x=a;
y=b;
z=c;
}
// Circle(int a){//此种定义,会导致,构造函数 在调用时,编译器不知该如何调用哪个构造函数,由于带有默认参数值的默认构造函数的出现
// x=a;
// y=4;
// z=5;
// }
// Circle(float a){//此种定义,会导致,构造函数 在调用时,编译器不知该如何调用哪个构造函数,由于带有默认参数值的默认构造函数的出现
// x=(int)a;
// y=4;
// z=5;
// }
public:
void print(){
std::cout<<"x="<<x<<"y="<<y<<"z="<<z<<endl;
}
private:
int x;
int y;
int z;
};
因此,当进行构造函数重载时,要特别注意本文到此结束,
- C++之带有默认参数值的构造函数
- C++之带有默认参数值的构造函数
- 带有默认参数的构造函数
- C#---带有参数的构造函数
- 【C++】实现一个复数类(complex)(带有默认参数的构造函数 )
- javascript中使用带有默认参数的自定义构造函数
- C++ 带有默认参数的虚函数
- 【c/c++】构造函数的默认参数以及缺省参数值
- 构造函数(带有参数的)
- 【java学习笔记】 如果定义了带有参数的构造函数,则默认构造函数失效(需手动定义)
- 默认参数的构造函数
- 默认参数的构造函数
- 默认参数的构造函数
- C/C++开发语言系列之11---使用默认参数的构造函数
- 小朋友学C++(9):构造函数的默认参数
- 第五周任务一之默认参数的构造函数
- C++进阶之有默认参数的构造函数
- 【C++总结】带有默认参数的函数,缺省函数
- PAT---A1009. Product of Polynomials (25)
- 2016.12.29 反射
- 从ecplise转Android studio的小细节
- iOS 工作之余小总结(五)--(1) Block在程序中的三个用法
- Spring Boot JPA - No qualifying bean of type
- C++之带有默认参数值的构造函数
- javaweb--基础介绍
- 安装Scrapy过程中的错误总结及学习方法
- 《学习笔记》之CentOS下JDK安装与配置
- CocoaPods报错:The dependency `AFNetworking ` is not used in any concrete target
- 做好测试计划和测试用例工作的关键!!!
- Linux运行shell程序的方法
- 哈夫曼编码
- Unity3D 5.3 新版AssetBundle使用方案及策略