找到做网站的公司,建设云个人网站,关键词查询工具包括哪些,数字营销 h5 网站开发目录定义主要特点C的构造函数定义格式示例1#xff1a;不带参数的构造函数示例2#xff1a;带参数的构造函数示例3#xff1a;使用初始化列表来初始化字段类的析构函数定义
构造函数 #xff0c;是一种特殊的方法。主要用来在创建对象时初始化对象#xff0c; 即为对象成…
目录定义主要特点C的构造函数定义格式示例1不带参数的构造函数示例2带参数的构造函数示例3使用初始化列表来初始化字段类的析构函数定义
构造函数 是一种特殊的方法。主要用来在创建对象时初始化对象 即为对象成员变量赋初始值总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
主要特点
1.构造函数的命名必须和类名完全相同。 2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值也不能用void来修饰。 3.构造函数不能被直接调用必须通过new运算符在创建对象时才会自动调用而一般的方法是在程序执行到它的时候被调用的 4.当定义一个类的时候通常情况下都会显示该类的构造函数并在函数中指定初始化的工作也可省略 5.构造函数有回滚的效果构造函数抛出异常时构造的是一个不完整对象会回滚将此不完整对象的成员释放
C的构造函数定义格式
C语言为类提供的构造函数可自动完成对象的初始化任务全局对象和静态对象的构造函数在main()函数执行之前就被调用局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时并不调用相应的构造函数因为这个外部对象只是引用在其他地方声明的对象并没有真正地创建一个对象。
class 类名
{
public:
类名(参数表);
//...(还可以声明其它成员函数)
};
类名::函数名(参数表)
{
//函数体
}示例1不带参数的构造函数
#include iostreamusing namespace std;class Line
{public:void setLength( double len );double getLength( void );Line(); // 这是构造函数private:double length;
};// 成员函数定义包括构造函数
Line::Line(void)
{cout Object is being created endl;
}void Line::setLength( double len )
{length len;
}double Line::getLength( void )
{return length;
}
// 程序的主函数
int main( )
{Line line;// 设置长度line.setLength(6.0); cout Length of line : line.getLength() endl;return 0;
}运行结果
Object is being created
Length of line : 6示例2带参数的构造函数
#include iostreamusing namespace std;class Line
{public:void setLength( double len );double getLength( void );Line(double len); // 这是构造函数private:double length;
};// 成员函数定义包括构造函数
Line::Line( double len)
{cout Object is being created, length len endl;length len;
}void Line::setLength( double len )
{length len;
}double Line::getLength( void )
{return length;
}
// 程序的主函数
int main( )
{Line line(10.0);// 获取默认设置的长度cout Length of line : line.getLength() endl;// 再次设置长度line.setLength(6.0); cout Length of line : line.getLength() endl;return 0;
}运行结果
Object is being created, length 10
Length of line : 10
Length of line : 6示例3使用初始化列表来初始化字段
Line::Line( double len): length(len)
{cout Object is being created, length len endl;
}等同于
Line::Line( double len)
{length len;cout Object is being created, length len endl;
}假设有一个类 C具有多个字段 X、Y、Z 等需要进行初始化同理地您可以使用上面的语法只需要在不同的字段使用逗号进行分隔如下所示
C::C( double a, double b, double c): X(a), Y(b), Z(c)
{....
}类的析构函数
类的析构函数是类的一种特殊的成员函数它会在每次删除所创建的对象时执行。 析构函数的名称与类的名称是完全相同的只是在前面加了个波浪号~作为前缀它不会返回任何值也不能带有任何参数。析构函数有助于在跳出程序比如关闭文件、释放内存等前释放资源。
#include iostreamusing namespace std;class Line
{public:void setLength( double len );double getLength( void );Line(); // 这是构造函数声明~Line(); // 这是析构函数声明private:double length;
};// 成员函数定义包括构造函数
Line::Line(void)
{cout Object is being created endl;
}
Line::~Line(void)
{cout Object is being deleted endl;
}void Line::setLength( double len )
{length len;
}double Line::getLength( void )
{return length;
}
// 程序的主函数
int main( )
{Line line;// 设置长度line.setLength(6.0); cout Length of line : line.getLength() endl;return 0;
}运行结果
Object is being created
Length of line : 6
Object is being deleted参考
https://www.runoob.com/cplusplus/cpp-constructor-destructor.html https://baike.baidu.com/item/%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0/7478717?fraladdin