首页 > 代码库 > 构造函数 、析构函数 、拷贝构造函数 ~~~~~~~~~~构造函数
构造函数 、析构函数 、拷贝构造函数 ~~~~~~~~~~构造函数
(一)构造函数
构造函数的作用:实现对数据成员函数的初始化。(因为在声明类时直接赋值是不允许的)。
1.构造函数的使用:
①:没有返回值,没有类型,只是对 对象 进行初始化;
②:构造函数不需要用户调用,也不能被用户调用;系统会自动执行且只执行一次,一般声明为public;
③:可以用类对象初始化另一个对象,例:
rectangle t1; ///建立对象t1,同时系统会调用构造函数t1.rectangle() rectangle t2=t1;///建立对象t2,且将t2初始化为t1;
使用的样式:
class rectangle { private: int l,w; public: rectangle(int a,int b):l(a),w(b){}///构造函数且利用初始化列表进行初始化 };
在类中定义了构造函数 rectangle,它和所在的类同名。在建立对象时自动执行构造函数,根据构造函数rectangle()的定义是将a和b分别赋给 l 和 w ,同样可以在类外定义构造函数,但要加上域限定符"::",比如
class rectangle { private: int l,w; public: rectangle();///在类中声明构造函数 } rectangle::rectangle(int a,int b):l(a),w(b){}///构造函数且利用参数初始化列表进行初始化
2.构造函数的类别
①:带参数的构造函数:在调用不同对象时,实现对不同对象赋予不同的初值。
一般形式:
构造函数名(类型1 形参1 ,类型2,形参2)
简例:求给定长和宽的矩形面积,长m,宽n。
#include<iostream> using namespace std; class rectangle { private: int len; int wid; public: rectangle(int a,int b);
//rectangle(int,int); int area(); }; rectangle::rectangle(int a,int b):len(a),wid(b){} int rectangle::area() { return len*wid; } int main() { int m,n; while(cin>>m>>n){ rectangle A(m,n); cout<<"The rectangle‘s area is:"<<A.area()<<"."<<endl; } return 0; }
② 不带参数的
#include<iostream> using namespace std; class rectangle { private: int len; int wid; public: rectangle();///声明一个不带形参的构造函数 rectangle(int a,int b):len(a),wid(b){}///定义一个有参的构造函数 int area(); }; rectangle::rectangle() { len=10; wid=10; } int rectangle::area() { return len*wid; } int main() { rectangle c; cout<<"The rectangle‘s area is:"<<c.area()<<"."<<endl; rectangle b(1,2);//传参改变初始化值 cout<<"The rectangle‘s area is:"<<b.area()<<"."<<endl; return 0; }
③含有默认参数的构造函数(本人感觉是以上两种的合体,更好用)
简例:求一个长方体的体积,已知长宽高
#include<iostream> using namespace std; class cft { private: int len; int wid; int hei; public: cft(int a=10,int b=10,int c=10):len(a),wid(b),hei(c){} int volum(); }; int cft::volum() { return len*wid*hei; } int main() { cft c;///一个参数没变 cout<<"The cft‘s volum is:"<<c.volum()<<"."<<endl; cft b(1,2);///改变两个参数 cout<<"The cft‘s volum is:"<<b.volum()<<"."<<endl; cft d(4,5,6);///三个参数都改变 cout<<"The cft‘s volum is:"<<d.volum()<<"."<<endl; return 0; }
构造函数 、析构函数 、拷贝构造函数 ~~~~~~~~~~构造函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。