构造函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数相关的知识,希望对你有一定的参考价值。
参考技术A function 函数名 ()this.属性名 = "";
this.方法名 = function ()
函数体;
var p = new 函数名 ();
p.方法名();//可调用此方法;
//注意:在构造函数里所有的属性和方法皆用this.来书写
构造函数必须通过new关键字来创建,如:
var p = new 函数名("值一","值二","值三")
注意:括号中的值可以是常量,也可以是变量
构造函数与普通函数之间就调用的方式不同
构造函数通过new关键字来调用,普通函数则可以直接调用
普通函数是遵循小驼峰命名法,即第一个单词首字母小写,其余单词首字母大写;
构造函数则是所有单词首字母都为大写
1) 首先要创建一个对象,对象类型就是这个构造函数的名字
2) 最后会把创建好的这个对象自动返回
3) 注意:var p = new 函数名(); 此时的p就已经是一个对象了
4) 调用通过构造函数创建好的对象中的某个属性,格式为: p.属性名; 或 p.方法名();
1) 在构造函数中,this指代的就是创建的这个对象
这也是为什么在构造函数中要使用this.属性名来书写了
2) 在对象中,属性和方法的书写格式为: 属性名 : "值"; 或 方法名 : function (); //属性与属性或方法与方法之间
都以,隔开
在构造函数中,书写格式为: this.属性名 = "值"; 或 this.方法名 = function (); //每个属性之间以;隔开
构造函数 析构函数 拷贝构造函数 ~~~~~~~~~~构造函数
(一)构造函数
构造函数的作用:实现对数据成员函数的初始化。(因为在声明类时直接赋值是不允许的)。
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; }
以上是关于构造函数的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin类的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )