c++语言构造函数和默认构造函数

构造函数

1:定义:完成对象初始化的函数就是构造函数
2:类的对象的初始化是由类的成员函数类进行的
3:在建立对象的时候就直接去调用构造函数了
4:类对象的定义涉及到类名和对象名
5:由于类具有唯一性,而对象具有多样性,所以使用类名来作为构造函数名字
6:默认构造函数,如果没有定义构造函数,编译器会提供默认构造函数

构造函数功能:

构造函数是负责对象的初始化工作,将数据成员初始化
创建对象的时候,其类的构造函数确保:在用户操作对象之前,系统保证初始化的进行
构造函数给对象分配空间和初始化

构造函数的语法规则:

构造函数名字与类名一样
构造函数没有返回类型
方法的实现主要是为对象来赋初值
放在外部进行定义的构造函数需要在函数名前面加”::”
构造函数是在定义对象的时候自动定义的
构造函数可以进行隐式的类型转换(ecplict禁止构造函数进行隐式转换)

析构函数

1:一个类可能在构造函数里面分配资源,这些资源要在对象不复存在以前被释放掉
2: 析构函数也是一种特殊的成员,它没有返回类型,没有参数,不能随意的调用,也没有重载.只是在类对象生命期结束的时候,会由系统自动的调用
3:析构函数名,就是在构造函数前面加一个逻辑非运算符号”~”,表示”逆构造函数”
4:如果类没有提供析构函数,那么编译器会为类提供一个默认的析构函数
5:析构函数不能重载,只有一个
#include<iostream>  
using namespace std; 

class Clock{
    public:
        Clock(int newH, int newM, int newS);         //构造函数
        Clock();//默认构造函数
        ~Clock(); //析构函数
        void setTime(int newH, int newM, int newS);
        void showTime();
    private:
        int hour, minute, second;
};

Clock::Clock():hour(0),minute(0),second(0){
} //赋初始值
//hour=0,minute=0,second=0

Clock::~Clock() 
{
	cout<<"the process is at end"<<endl;
}//俩次调用析构函数
void Clock::setTime(int newH, int newM, int newS){
    hour=newH;
    minute=newM;
    second=newS;
}

void Clock::showTime(){
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}

Clock::Clock(int newH, int newM, int newS):hour(newH),minute(newM),second(newS){ 
}
//同默认构造函数的赋值方式
int main(){
    Clock c;          //调用默认构造函数建立对象c
    c.showTime();
    Clock c1;
   	c1.setTime(8, 30, 30);//传递参数
    c1.showTime();
    return 0;
}
总结:
构造函数与析构函数是控制了一个类的定义和结束的过程
构造函数是控制了类的对象的初始化,资源申请的过程
析构函数是控制了类对象的结束过程,资源释放的过程
发布了20 篇原创文章 · 获赞 1 · 访问量 2494

猜你喜欢

转载自blog.csdn.net/m0_46198325/article/details/105018951