类的构造函数
默认构造函数、无参构造函数 、有参构造函数
默认构造函数的定义方法有两种:
一、 A()
二、A(int num = 0, int age = 10);
默认构造函数 |
无参构造函数 |
有参构造函数 | |
A() |
是 |
是 |
否 |
A(int num = 0, int age = 10) |
是 |
否 |
是 |
A(int num, int age ) |
否 |
否 |
是 |
一个类中只能有一个默认构造函数,最好也要有一个默认构造函数。
类声明如下:
class A
{
int num;
int age;
public:
A();
A(int num = 0, int age = 10);
A(int num, int age);
};
上述类中的错误:
1、不能有两个默认构造函数:A(); /A(int num = 0, int age = 10);
2、有参构造函数不能重构 ,参数列表一致了。
修改:
一、
#include<iostream>
class A
{
int num;
int age;
public:
A();
A(int num, int age);
void show(){std::cout<<num<<","<<age<<std::endl;}
};
A::A()
{
num = 0;
age = 10;
}
A::A(int num, int age)
{
this->num = num;
this ->age = age;
}
int main()
{
A a1; //利用默认构造函数隐示创建对象,不能加括号 A a1() 错误
a1.show();
A a2 = A(); //利用默认构造函数显示创建对象
a2.show();
A a3(1,10); //利用有参构造函数隐示创建对象
a3.show();
A a4 = A(2,20);
a4.show();
A *a5 = new A;
a5->show();
return 0;
}
结果:
二、
#include<iostream>
class A
{
int num;
int age;
public:
A(int num = 0, int age=10); //既为默认,也是有参构造函数
void show(){std::cout<<num<<","<<age<<std::endl;}
};
A::A(int num, int age)
{
this->num = num;
this ->age = age;
}
int main()
{
A a1; //利用默认构造函数隐示创建对象
a1.show();
A a2 = A(); //利用默认构造函数显示创建对象
a2.show();
A a3(1,10); //利用有参构造函数隐示创建对象
a3.show();
A a4 = A(2,20);
a4.show();
A *a5 = new A;
a5->show();
return 0;
}
结果: