b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c ++类构造函数的详细说明

电脑杂谈  发布时间:2020-07-29 12:02:23  来源:网络整理

c++类构造函数_笔记本产品a类b类c类_申论 a类 b类 c类

//首先,什么是构造函数

/ *创建类对象时,编译器系统对象分配内存空间并自动调用构造函数->构造函数完成成员的初始化

例如: 计数器c1;

编译系统为对象c1的每个数据成员(m_value)分配内存空间,并调用构造函数Counter()自动初始化该对象. 初始化后,将c1的m_value值设置为0

因此: 构造函数的作用: 初始化对象的数据成员. * /

班台计数器

{

public: //类Counter的构造方法,以类名作为函数名,没有返回类型

Counter(){

m_value = 0;

}

私人:

int m_value; //类私有数据成员

}

//第二,构造函数的类型

#include

使用命名空间标准;

复杂类

申论 a类 b类 c类_笔记本产品a类b类c类_c++类构造函数

{

私人:

double m_real;

double m_imag;

公共:

// *没有参数构造函数

//如果不编写任何构造函数来创建类,系统将自动生成默认的无参数构造函数,该函数为空,并且什么也没做

///只要编写以下构造函数之一c++类构造函数,系统将不再自动生成此类默认构造函数. 如果您想要这样的无参数构造函数,则需要明确地将其写出.

复杂(无效)

{m_real = 0.0;

m_imag = 0.0;

}

// *常规构造函数(也称为重载构造函数)

//通用构造函数可以具有各种参数形式,并且一个类可以具有多个通用构造函数,只要参数的数量或类型不同(基于C ++重载函数的原理)

//例如: 您还可以编写Complex(int num)构造函数,并根据创建对象时传入的参数调用不同的构造函数

复杂(双重实数,双重影像)

{m_real = real;

m_imag = imag;

c++类构造函数_笔记本产品a类b类c类_申论 a类 b类 c类

}

// *复制构造函数(也称为复制构造函数)

//复制构造函数的参数是对类对象本身的引用,该对象用于基于现有对象复制该类的新对象. 通常,将现有对象的数据成员的值复制到函数中. 复制到新创建的对象

///如果没有显示写复制构造函数,则系统默认会创建一个复制构造函数,但是当类中有指针成员时,系统会默认创建复制构造函数,这会有风险. 具体原因与“在文章“浅拷贝”和“深拷贝”中讨论

Complex(const Complex&c)

{//复制对象c中的数据成员值

m_real = c.m_real;

m_imag = c.m_imag;

}

// *类型转换构造函数根据指定的对象类型创建此类的对象. 需要注意的一件事是,这实际上是一个通用构造函数,但是对于单参数构造函数,C ++默认会将与参数对应的类型转换为该类型c++类构造函数

//有时这种隐私转换是不可取的,因此我们需要使用显式限制转换.

//例如: 以下将基于双精度类型对象创建一个Complex对象

复杂(双r)

{m_real = r;

m_imag = 0.0;

}

//等号运算符重载(也称为赋值构造函数)

//请注意,这类似于复制构造函数,后者将=右侧的对象的值复制到等号左侧的对象. 它不属于构造函数. 必须创建等号左右两侧的对象.

c++类构造函数_笔记本产品a类b类c类_申论 a类 b类 c类

//如果未显示=运算符重载,系统还将创建默认的=运算符重载,并且仅执行一些基本的复制工作

Complex&operator =(const Complex&rhs)

{//首先检查等号的右边是否是左边的对象本身,如果是对象本身,则将直接返回

if(this ==&rhs)

{返回* this;

}

///将等号右侧的成员复制到左侧的对象

this-> m_real = rhs.m_real;

this-> m_imag = rhs.m_imag;

///等号左侧的对象再次发出,目的是支持连续等待,例如: a = b = c系统首先运行b = c,然后运行a =的返回值(b = c,这里应该是c值之后的副本b对象)

返回* this;

}

};

//三,使用上面定义的类对象来说明每个构造函数的用法:

int main()

{

//调用无参数构造函数,并将数据成员的初始值分配为0.0

复杂的c1,c2;

c++类构造函数_申论 a类 b类 c类_笔记本产品a类b类c类

//将调用通用构造函数,并将数据成员的初始值分配给指定的值.

复杂c3(1.0,2.5);

//当然,您也可以使用以下表格

//复杂c3 =复杂(1.0,2.5);

//将c3的数据成员的值分配给先前创建的对象c1

//由于c1是预先创建的,因此此处不会调用任何构造函数

//仅调用=运算符重载函数

c1 = c3;

//调用类型转换构造函数

//系统首先调用类型转换构造函数,创建5.2作为此类的临时对象,然后调用等号运算符重载将临时对象分配给c2

c2 = 5.2;

//调用复制构造函数(有两种调用方式)

复杂的c5(c3);

复杂 = c3;

//请注意重载和=运算符之间的区别,此处尚未提前创建等号左侧的对象,因此需要调用复制构造函数,参数为c2

//这尤其重要,这里是初始化,而不是赋值.

//实际上,C ++中涉及两种初始化方法: 复制初始化和赋值初始化.

//其中,c5使用复制初始化,使用赋值初始化. 这两种方法都需要调用复制构造函数.

}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-288941-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 邵以正
        邵以正

        我不觉得自己多勇敢

      • 韩正卿
        韩正卿

        这就是明目张胆的挑衅

      热点图片
      拼命载入中...