欢迎光临散文网 会员登陆 & 注册

构造函数

2023-02-07 14:29 作者:江不默  | 我要投稿

#include <iostream>

#include "类的定义.h"


//构造函数名字必须与类名一致,并且不能指定返回类型 --->初始化


class Cuboid {

public :

//1.

Cuboid() {//默认构造函数 :1.空参  2.带所有形参带默认参数 

len=hei=wit=0;

};//内部构造函数,必须为public;

//2.

Cuboid(int l,int h,int d=0) : len(l),hei(h),wit(d) {}; 

int volume() {

return len*hei*wit;

};

//3.

Cuboid (int l=0,int h=0);//参数默认值只能先在类的内部定义,不能放在外面

private:

int len,hei,wit;

String str; 

};


//外部构造函数

Cuboid :: Cuboid (int l,int h) {

len = l,hei = h;

}



int main() {

//Cuboid k; 1,3构成歧义

Cuboid m(1,3);

return 0;

}


/*

利用带默认参数的默认造函数  进行隐式转换 (把某个数据类型转换成类 类型) 

一般将单形参构造函数设置为explicit,表明该函数为显式,不能进行隐式转换,可以避免错误。 

class Cuboid 中: 

Cuboid(const String &s) : str(s) {}; //引用+不可修改 


main 中: 

string s = "jfiasgjoag"; 

Cuboid k = Cuboid(s); //使用构造函数,某种意思上将s字符串类型,变为了一个对象 

*/ 


/*

复制构造函数:

利用一个已知的构造函数,来初始化一个被创建的同类的对象

只复制,所以用const限定

不自定义的话,会自动生成合成复制构造函数 ,

即不定义也可以使用等号。

经常应用在函数形参 或者 返回值为 对象时 

 

浅复制(指针指向同一块存储空间,为了复制时节省空间)但会出bug;

深复制 ,new一个新的 


用 = ,即系统自动生成的复制都是浅复制 


https://www.icourse163.org/learn/NWPU-494001?tid=1468259464#/learn/content?type=detail&id=1250100088&sm=1

*/ 


构造函数的评论 (共 条)

分享到微博请遵守国家法律