C++之构造函数

C++中有类和对象的定义。(这也是常被拿来调侃的内容“没有对象?new一个”)。
类的声明需要加上class关键字

格式为 class + 类名 { 内容 };
时钟类

class clock
{
public:
clock(int hour, int minute, int second);
clock();
void show();
private:
int hour, minute, second;
};
当以后用clock创建对象的时候,每个对象都会调用自己的类里面的构造函数,如果我们没有自己编写构造函数的话,它会调用系统默认的构造函数。

一个类的构造函数的编写有不同的写法

构造函数前面不需要加int、void这样数据类型限定。

第一种则是   类名::构造函数名(和类名一样){内容实现}。(::为类作用域限定符,表明函数属于哪个类)

以clock类为例

clock::clock()
{
hour = 0;
minute = 0;
second = 0;
cout << "使用了第二个构造函数"<<endl;
};
第二种则是加入形参可以使得在创建对象的时候对类进行初始化。格式为类名::类名(形参):类成员(对应形参){内容}

仍然以clock类为例

clock::clock(int hour, int minute, int second):hour(hour),minute(minute),second(second)
{
cout <<"使用了第一个构造函数"<<endl;
};
当只使用第一种构造函数的时候我们无法在对象创建的时候对对象进行初始化。

只能像如下这样创建对象。(以clock类为例)

扫描二维码关注公众号,回复: 6676483 查看本文章

clock c1;
当只使用第二种写法的时候,我们在创建对象的时候必须在后面跟上参数

比如

clock c(1,2,3);
而当两种构造函数都写上的时候,那么我们在创建对象时候,既可以在我们需要对它进行初始化的时候对它进行初始化,也可以在不需要初始化的时候直接创建。

下面是clock类的完整代码,为了更好的反应函数运作过程,我将两个构造函数分别加了一个输出语句,输出不同的字符串用来表明,调用的是不同构造函数。

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
class clock
{
public:
clock(int hour, int minute, int second);
clock();
void show();
private:
int hour, minute, second;
};
int main()
{
clock c(1,2,3);
c.show();
clock c1;
c1.show();
return 0;
}
clock::clock(int hour, int minute, int second):hour(hour),minute(minute),second(second)
{
cout <<"使用了第一个构造函数"<<endl;
};

clock::clock()
{
hour = 0;
minute = 0;
second = 0;
cout << "使用了第二个构造函数"<<endl;
};

void clock::show(http://www.my516.com)
{
cout << "hour = "<<hour << endl;
cout << "minute = "<<minute<<endl;
cout << "second = " << second<< endl;
}
 
---------------------

猜你喜欢

转载自www.cnblogs.com/ly570/p/11106217.html
今日推荐