**
C++构造函数的几种写法
**
主要借鉴了https://blog.csdn.net/zxc024000/article/details/51153743
之前学习了构造函数的方法,但是对于类似于初始化列表的方式不太理解,于是自己在网上查阅了一些博客之后,在这里记录一下,方便以后温习查阅。废话好多,下面开始正文—
一.默认构造函数
二.初始化构造函数
class student
{
public:
student() //默认构造函数
{
num = 10086;
age = 18;
}
//student(int n, int a) :num(n), age(a){} //初始化构造函数也有两种方式,这里是初始化列表的方式
student(int n, int a) //这里是第二种方法,内部赋值的方法
{
num = n;
age = a;
}
void display()
{
cout << "the name is " << num << endl;
cout << "the age is " << age <<endl;
}
protected:
private:
int num;
int age;
};
三.复制构造函数
student s1;
student s2(s1);
***C++自带的复制构造函数如下
Student(Student &b)
{
this.x=b.x;
this.y=b.y;
}
四.转化构造函数
下面的转换构造函数,将int类型的r转换为Student类型的对象,对象的age为r,num为1004.
Student(int r)
{
int num=1004;
int age= r;
}
五.Q&A
Q: C++中的类一定要加上构造函数吗?
A: 这里面涉及到对语言的理解,可以这么说,C++ 里面的所有类都有构造函数。
但是你写的时候可以不写构造函数,但你构造出来的类还是有构造函数。(意思是可以不用写构造函数,但是系统会加
上默认构造函数)这是因为你不写构造函数的话,其实 C++ 会自动的帮你加上一个构造函数,这个就是默认的构造函
数。
再贴一段百科的定义你就懂了:
默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者
为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化时就会使用默认构造函数。