10--c++多态性

合集下载

C语言中的多态

C语言中的多态

C语⾔中的多态⼀、多态的主要特点1、继承体系下。

继承:是⾯向对象最显著的⼀个特性。

继承是从已有的类中派⽣出新的类,新的类能吸收已有类的数据属性和⾏为,并能扩展新的能⼒,已有类被称为⽗类/基类,新增加的类被称作⼦类/派⽣类。

2、⼦类对⽗类的虚函数进⾏重写。

3、虚表。

在⾯向对象语⾔中,接⼝的多种不同现⽅式即为多态。

同⼀操作作⽤于不同的对象,可以有不同的解释,产⽣不同的执⾏结果,这就是多态性。

简单说就是允许基类的指针指向⼦类的对象。

⼆、代码实现1、C++中的继承与多态1 class Base2 {3 public:4 virtual void fun() {} //基类函数声明为虚函数5 int B1;6 };7 class Derived :public Base //Derived类公有继承Base类8 {9 public:10 virtual void fun() { //函数重写,此时基类函数可以声明为虚函数,也可以不声明11 cout << "D1.fun" << endl;12 }13 int D1;14 };15 int main(){16 Base b1; //创建⽗类对象17 Derived d1;//创建⼦类对象1819 Base *p1 = (Base *)&d1;//定义⼀个⽗类指针,并通过⽗类指针访问⼦类成员20 p1->fun();2122 Derived *p2 = dynamic_cast<Derived*> (&b1); //dynamic_cast⽤于将⼀个⽗类对象的指针转换为⼦类对象的指针或引⽤(动态转换)23 p2->fun();2425 getchar();26 return 0;27 }2. C语⾔实现C++的继承与多态1 typedef void(*FUNC)(); //定义⼀个函数指针来实现对成员函数的继承2 struct _Base //⽗类3 {4 FUNC _fun;//由于C语⾔中结构体不能包含函数,故借⽤函数指针在外⾯实现5 int _B1;6 };7 struct _Derived//⼦类8 {9 _Base _b1;//在⼦类中定义⼀个基类的对象即可实现对⽗类的继承10 int _D1;11 };12 void fb_() //⽗类的同名函数13 {14 printf("_b1:_fun()\n");15 }16 void fd_() //⼦类的同名函数17 {18 printf("_d1:_fun()\n");19 }20 int main() {21 _Base _b1;//定义⼀个⽗类对象_b122 _Derived _d1;定义⼀个⼦类对象_d12324 _b1._fun = fb_;//⽗类的对象调⽤⽗类的同名函数25 _d1._b1._fun = fd_;//⼦类的对象调⽤⼦类的同名函数2627 _Base *_p1 = &_b1;//定义⼀个⽗类指针指向⽗类的对象28 _p1-> _fun(); //调⽤⽗类的同名函数2930 _p1 = (_Base *)&_d1;//让⽗类指针指向⼦类的对象,由于类型不匹配所以要进⾏强转31 _p1->_fun(); //调⽤⼦类的同名函数3233 getchar();34 return 0;35 }。

C--程序设计--第10章-多态性及虚函数

C--程序设计--第10章-多态性及虚函数

使用重载函数注意:
不要使用重载函数描述不相干的函数 在类中,构造函数和普通成员函数均可以
重载 避免与函数的默认参数产生二义性
二、运算符重载
运算符重载(operate overloading)就是 赋予已有的运算符多重含义。
运算符重载实质是函数重载,运算符重载 的选择与函数重载类似,会根据运算符的 操作数的类型、个数和顺序来进行运算符 函数的选择。
#include<iostream.h> str#iinngc:l:usdter<isntgr(icnhga.rh>*s) v{}ossccsssc{s{{ittohtttolsstlsssls*drruarrrueptrepttepsi1trii3tc{pn=rin=rrn=pmn.<nn.<lprgncngncign=agp<*ggp<auitepgtepnte'irssrssbv\hwy:hwyghwnsit1ssitsla0=(:=(:=(tnr=ttnrit'scssscs:sc)rt1"rrt3scesss~ivci;thpt1hpsih1(.T23(.t::tttsnohn}ra,r.a,tza()gh(()grrrrttiatlrsilrsrer";eass;eiiiirdre[)ne[1i;[Ttt1ttnnnniglnl;gnl.nlhl)rlggggnep*e(e}(gesgeiei;2e(((gtrsnsnstnp(nsns)ncsi(lipg)gthg)ig(;(htn)en;t;tr;t;nti)a)artnthhih}ths<<ri{((;+n++<p<snd))}1g1s1aere*ige;]]i]nonszl{{;&;z;ddgd)&eercseelrl;s=teo1)m;a;/18etu)om/)0ut..;)构sr<""/;pn<造);//;s;/复}lp函构e<制n<数造ge构tn函hd造;l数};重} 载

CAPN-10基因多态性与2型糖尿病遗传易感性及其相关危险因素的研究

CAPN-10基因多态性与2型糖尿病遗传易感性及其相关危险因素的研究
1 0基 因 S NP 4 3 位 点 多态 性 、 糖 尿 病 家族 史 、 B MI 、 年 龄 增 加 T2 D M 发 生的危险度 , 可 能是 其 重 要 危 险 因素 。结 论 C A P N 一 1 0基 因
S NP 4 3位 点 G 等 位 基 因可 能与 T2 D M 的发生有关 , 而1 6和 6 3位 点 则与 T2 D M 发 生 无 明 显 关 系 。C AP N 一 1 0基 因 S NP 4 3位 点 多
周 龙 , 马 莉 , 谭 玉洁 。 △
( 1 . 重 庆三峡 中心 医院生化 科 , 重庆 万 州 4 0 4 0 0 0 ; 2 . 贵 阳医学 院附属 医院 中心 实验 室 , 贵 州贵 阳 5 5 0 0 0 1 ;
3 . 贵 阳 医学 院附属 白云 医院检 验科 , 贵 州贵 阳 5 5 0 0 1 4 )
国际检验 医学 杂志 2 0 1 3年 7月第 3 4卷第 1 3期
a b Me dJ I n t JL u l y 2 0 1 堡 65 1 ・

临床 检 验研 究论 著 ・
C AP N一 1 0基 因 多态性 与 2型糖 尿病 遗传 易 感性 及 其 相 关危 险 因素 的研 究
态性 、 糖 尿 病 家族 史 、 B MI 和 年 龄 是 T2 D M 发 生 的 重要 危 险 因素 。
关键词 : 糖尿病 , 2型 ; 疾 病 遗 传 易 感性 ; 多 态现 象 , 遗 传 D OI : 1 0 . 3 9 6 9 / j . i s s n . 1 6 7 3 — 4 1 3 0 . 2 0 1 3 . 1 3 . 0 0 9 文献标识码 : A 文章编号 : 1 6 7 3 — 4 1 3 0 ( 2 O 1 3 ) 1 3 - 1 6 5 1 - 0 5

基因多态性对人类免疫应答的影响研究

基因多态性对人类免疫应答的影响研究

基因多态性对人类免疫应答的影响研究近年来,随着生物技术的不断发展,越来越多的人开始关注基因和基因多态性对免疫应答的影响。

基因多态性是指不同基因型之间存在的遗传差异,影响了人们对感染和免疫应答的反应。

在人类中,基因多态性往往与一些免疫相关疾病的发生密切相关。

影响基因多态性的因素有很多,包括环境因素、生活习惯、遗传基因等等。

例如,我们中有些人可能天生就拥有更强大的免疫系统,他们的身体可以更好地应对病毒和细菌的攻击,而有些人则很容易受到感染。

这一切都是因为基因多态性的存在所导致的。

近年来,在研究人类免疫系统的过程中,科学家们发现了很多对基因多态性产生影响的基因。

例如,IL-10、IFN-γ和CCR5等基因都与免疫应答的能力有关。

IL-10可以减弱人体免疫细胞对病毒和细菌的攻击,而IFN-γ则可以增强人体的抵抗力。

此外,CCR5基因则可以影响人体对HIV病毒的免疫反应。

除了上述基因之外,HLA基因也是非常重要的基因之一。

HLA基因是我们身体中的一类基因,它们可以帮助我们的免疫系统识别和攻击病毒和细菌等病原体。

我们的免疫系统是基于HLA基因的多样性来工作的,这种多样性意味着我们每个人都有独特的免疫系统。

这也解释了为什么有些人会对某种病原体有更强的免疫反应,而有些人则很容易患上某种病。

在过去的几十年中,科学家们已经对基因多态性的影响进行了深入的研究。

他们发现,基因多态性不仅与免疫系统的功能有关,还与很多疾病的发生有关,例如癌症、自身免疫疾病和过敏等等。

因此,研究基因多态性对人类免疫应答的影响,对于了解人类免疫系统的运作机制以及预防和治疗各种免疫相关疾病,都非常重要。

总而言之,基因多态性对人类免疫应答的影响研究是一个非常重要的领域。

通过深入研究基因多态性,我们可以更好地了解人类免疫系统的运作机制,并为预防和治疗许多免疫相关疾病做出贡献。

随着越来越多的科学家加入到这一领域的研究中来,相信我们会逐步深入地了解基因多态性对人类免疫应答的影响。

钙蛋白酶10基因多态性与胰岛素抵抗相关疾病

钙蛋白酶10基因多态性与胰岛素抵抗相关疾病

对 T D 患者 后 代 C N1 态性 与胰 岛素 分 泌 、 2M AP 0多 作 用 及 异常 脂肪 分 布 的研 究 发 现 ,N .3A等 位 基 S P4 因 以及 携 带 A等 位基 因 的单 倍 型 பைடு நூலகம்男 性腹 内脂 肪
为非胰 岛素依赖型糖尿病 1( ID )的染色体 ND M1 23 - , q73中 该基 因全长 3 b含有 1 1 , k 5外显子 和 1 4个
压、 多囊卵巢综合征、 肥胖症等有一定的相关性 , 且这种相关性具有种族差异。 就钙蛋 白酶 1 0基 因与多种疾病间关系 的研究进展进行综述 。 关键 词 钙蛋 白酶 1 0基因 单核苷酸多态 2型糖 尿病 多囊 卵巢综合征 高血压 肥胖症 胰岛素抵抗
钙蛋 白酶 1 因( A N1) 0基 C P 0 是第一 个被 定位 克 隆 的与 2型糖 尿病 (2 M) 关 的基 因 , TD 相 其位 于称 之
维普资讯

1 2 5 ・
国外 医学计 划生育/ 生殖健康分册 2 0 0 7年 2 卷第 3 6 期
钙 蛋 白酶 1 O基 因多态性 与胰 岛素抵抗相关疾病
山 东大学 山 东省 立 医院 生殖 医 学 中心 (50 1 孙 雪琴 综述 陈子 江审校 2 02 )
内含 子 。在生 理 状 态下 钙 蛋 白酶 1 能参 与 细胞 0可 骨 架 调整 、 的修 饰 及 多种 细胞 过程 , 酶 包括 凋 亡 、 缺
血及 增生 等 。
分布有 关 , 与女性无关 ; 同时还发 现 , 带 S P4 携 N .3
A等位 基 因的一 级 亲属 为糖 尿病 患 者 的 中年男性 有 大 的腰 围和高 的胰 岛素水 平 , 出 的结论 为 S P4 得 N .3

如何用PCR法检测基因的多态性

如何用PCR法检测基因的多态性

如何用PCR法检测基因的多态性多态性(polymorphism)是指处于随机婚配的群体中,同一基因位点可存在2种以上的基因型。

在人群中,个体间基因的核苷酸序列存在着差异性称为基因(DNA)的多态性(gene polymorphism)。

这种多态性可以分为两类,即DNA位点多态性(site polymorphism)和长度多态性(longth polymorphism)。

基因多态性的主要检测方法简述如下:1.限制性片段长度多态性(Restriction Fragment Length Polymorphism,RFLP):由DNA 的多态性,致使DNA 分子的限制酶切位点及数目发生改变,用限制酶切割基因组时,钠问亢兔扛銎蔚某ざ染筒煌此降南拗菩云纬ざ榷嗵裕贾孪拗破纬ざ确⑸谋涞拿盖形坏悖殖莆嗵晕坏恪W钤缡怯肧outhern Blot/RFLP方法检测,后来采用聚合酶链反应(PCR)与限制酶酶切相结合的方法。

现在多采用PCR-RFLP法进行研究基因的限制性片段长度多态性。

2.单链构象多态性(SSCP):是一种基于单链DNA构象差别的点突变检测方法。

相同长度的单链DNA如果顺序不同,甚至单个碱基不同,就会形成不同的构象。

在电泳时泳动的速度不同。

将PCR产物经变性后,进行单链DNA凝胶电泳时,靶DNA中若发生单个碱基替换等改变时,就会出现泳动变位(mobility shift),多用于鉴定是否存在突变及诊断未知突变。

3.PCR-ASO探针法(PCR-allele specific oligonucleotide, ASO):即等位基因特异性寡核苷酸探针法。

在PCR扩增DNA片段后,直接与相应的寡核苷酸探杂交,即可明确诊断是否有突变及突变是纯合子还是杂合子。

其原理是:用PCR扩增后,产物进行斑点杂交或狭缝杂交,针对每种突变分别合成一对寡核苷酸片段作为探针,其中一个具有正常序列,另一个则具有突变碱基。

突变碱基及对应的正常碱基匀位于寡核苷酸片段的中央,严格控制杂交及洗脱条件,使只有与探针序列完全互补的等位基因片段才显示杂交信号,而与探针中央碱基不同的等位基因片段不显示杂交信号,如果正常和突变探针都可杂交,说明突变基因是杂合子,如只有突变探针可以杂交,说明突变基因为纯合子,若不能与含有突变序列的寡核苷探针杂交,但能与相应的正常的寡核苷探针杂交,则表示受检者不存在这种突变基因。

遗传多态性知识汇总

遗传多态性知识汇总

遗传多态性知识一、SNP, LD, Haplotype and Tagger SNP1. 遗传/基因多态性(genetic/gene polymorphism)在一随机婚配的群体中,染色体同一基因座位点上有两种或两种以上的基因型,且各个等位基因在群体中的出现频率皆高于1%。

它是决定人体对疾病易感性、临床表现多样性及药物治疗反应差异性的重要因素。

而种群中频率等于或小于1 %的碱基变异称为突变。

染色体同一DNA位置上的每个碱基类型叫做一个等位位点。

如某些人的染色体上某一位置的碱基是A,而另一些人的染色体上相同位置上的碱基是G,除性染色体外,每个人体内的染色体都有两份,所以,一个人所拥有的一对等位位点的类型被称作基因型(genotype),如GA、GG、AA;检定一个人的基因型,被称作基因分型(genotyping)。

由不同基因型与环境共同作用所产生的生物体(人类)可观测的物理或生理性状称为表现型(phenotype)。

限制性片段长度多态性(restriction fragment length polymorphism. RFLP)是第一代的遗传标记;可变数目的串联重复(variable number of tandem repeat. VNTR)是第二代遗传标记;其中重复单位为2-6个核苷酸称为微卫星或短串联重复;6-12个核苷酸称为小卫星。

Polymorphisms are defined as frequent (occurring in greater than 1% of the population) variations in the human DNA sequence. Most involve a single base pair substitution, known as single nucleotide polymorphisms(1), although more complex variations are also recognised. SNPs are single base pair positions in genomic DNA at which different sequence alternatives (alleles) exist in normal individuals in some population(s), wherein the least frequent allele has an abundance of 1% or greater. In principle, SNPs could be bi-, tri-, or tetra-alletic polymorphisms. Howere, in humans, tri-alletic and tetra-alletic SNPs are rare almost to the point of non-existence, and so SNPs are sometimes simply referred to as bi-allelic markers.单核苷酸多态性(single nucleotide polymorphism.SNP):最早由美国麻省理工学院的人类基因组研究中心Lander于1996年提出,是不同个体基因组DNA序列内特定核苷酸位置上单个碱基的不同.是第三代遗传标记,任一SNP在群体中出现的频率应不小于1%,原则上SNP 可以是双、三、四等位基因多态,在人类三、四等位基因的SNP很少甚至几乎不存在,因此SNP简单指双等位标记,双等位基因的SNP替换包括1个转换C\T(G\A)和3个颠换C\A(G\T)、C\G(G\C)、T\A(A \T),由于核苷酸的5-甲基胞嘧啶脱氢基反应相对比较频繁,使得四种SNPs在基因组中出现的频率不同,在生物体内约2/3是C/T(G/A)转换,并且多存在于非转录序列中。

基因多态性

基因多态性

基因多态性多态性(polymorphism)是指在一个生物群体中,同时和经常存在两种或多种不连续的变异型或基因型(genotype)或等位基因(allele),亦称遗传多态性(genetic polymorphism)或基因多态性。

从本质上来讲,多态性的产生在于基因水平上的变异,一般发生在基因序列中不编码蛋白的区域和没有重要调节功能的区域。

对于一个体而言,基因多态性碱基顺序终生不变,并按孟德尔规律世代相传。

基因多态性分类生物群体基因多态性现象十分普遍,其中,人类基因的结构、表达和功能,研究比较深入。

人类基因多态性既来源于基因组中重复序列拷贝数的不同,也来源于单拷贝序列的变异,以及双等位基因的转换或替换。

按引起关注和研究的先后,通常分为3大类:DNA片段长度多态性、DNA重复序列多态性、单核苷酸多态性。

DNA片段长度多态性DNA片段长度多态性(FLP),即由于单个碱基的缺失、重复和插入所引起限制性内切酶位点的变化,而导致DNA片段长度的变化。

又称限制性片段长度多态性,这是一类比较普遍的多态性。

DNA重复序列多态性DNA重复序列的多态性(RSP),特别是短串联重复序列,如小卫星DNA 和微卫星DNA,主要表现于重复序列拷贝数的变异。

小卫星(minisatellite)DNA由15~65bp 的基本单位串联而成,总长通常不超过20kb,重复次数在人群中是高度变异的。

这种可变数目串联重复序列(VNTR)决定了小卫星DNA长度的多态性。

微卫星(microsatellite)DNA 的基本序列只有1~8bp,而且通常只重复10~60次。

单核苷酸多态性单核苷酸多态性(SNP),即散在的单个碱基的不同,包括单个碱基的缺失和插入,但更多的是单个碱基的置换,在CG序列上频繁出现。

这是目前倍受关注的一类多态性。

SNP通常是一种双等位基因的(biallelic),或二态的变异。

SNP大多数为转换,作为一种碱基的替换,在基因组中数量巨大,分布频密,而且其检测易于自动化和批量化,因而被认为是新一代的遗传标记。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如,前置单目运算符“++”重载的语法 形式如下:
<函数类型>operator++(); 使用前置单目运算符“++”的语法形式如 下: ++<对象>;
运算符成员函数的设计
后置单目运算符 ++和--
运 算 符 重 载
如果要重载 ++或--为类成员函数,使之能够 实现表达式 oprd++ 或 oprd-- ,其中 oprd 为A类对象,则 ++或-- 应被重载为 A 类的成员函数,且具有一个 int 类型形参。 经重载后,表达式 oprd++ 相当于 oprd.operator ++(0)
6
运 算 符 重 载
例 通过函数来实现复数相加。
#include <iostream> using namespace std; class Complex //定义Complex类 { public: Complex( ){real=0;imag=0;} //定义构造函数 Complex(double r,double i){real=r;imag=i;} //构造函数重载 Complex complex_add(Complex &c2); //声明复数相加函数 void display( ); //声明输出函数
这表面上看起来像是对构造函数的调用,但其 实并非如此。这是临时对象语法,它的含义是 创建一个临时对象并返回它。
当然,也可以按如下形式返回函数值: Complex Complex::operator + (Complex &c2) { point c; c.real=real+c2.real; c.image=image+c2.image; return c; }
运 算 符 重 载
15
规则和限制
C++中能够被重载的运算符有:
运 算 符 重 载
new delete + - * / % ˆ ! = < > += ˆ= &= |= <<= == != ++ -, () []
new[] & | -= *= << >> <= >= ->* ->
delete[] ˜ /= %= >>= && ||
=(3+5,(4-10)i)
=(8,-6i) 在C++中不能在程序中直接用运算符“+”对复数进行相加运算, 5 c3=c1+c2编译会出错—— C++的运算符只适用于基本数据类型。
问题举例——复数的运算
class Complex { //复数类声明 public: Complex(double r = 0.0,double i = 0.0) { real = r; imag=i; } void display(); //显示复数的值 private: double real; double imag; };
25
程序输出的结果为: c1 = (5, 4)
c2 = (2, 10)
c3 = c1 - c2 = (3, -6)
c3 = c1 + c2 = (7, 14)
26
本例中重载的“+”、“-”函数中,都是创建 一个临时的无名对象作为返回值:
return Complex(real + c2.real, imag + c2.imag);
运算符成员函数的设计
前置单目运算符 U
运 算 符 重 载
如果要重载 U 为类成员函数,使之能够实现
表达式 U oprd,其中 oprd 为A类对象,则
U 应被重载为 A 类的成员函数,无形参。 经重载后, 表达式 U oprd 相当于 oprd.operator U()
30
运算符成员函数的设计
18
运 算 符 重 载
运算符成员函数的设计
运算符重载为成员函数

运算符重载实质上就是函数重载,当运算 符重载为成员函数之后,它就可以自由地访 问本类的数据成员了。实际使用时,总是通 过该类的某个对象来访问重载的运算符。如 果是双目运算符,一个操作数是对象本身的 数据,由this指针指出,另一个操作数则需 要通过运算符重载函数的参数表来传递;
实现机制
将指定的运算表达式转化为对运算符函数的调用, 运算对象转化为运算符函数的实参。 编译系统对重载运算符的选择,遵循函数重载的选 择原则。
11
两种形式
重载为类的非静态成员函数 重载为非成员函数
运 算 符 重 载
12
运算符重载的方法
运 算 符 重 载
定义一个重载运算符的函数,在需要执行被 重载的运算符时,系统就自动调用该函数,以 实现相应的运算。—— 运算符重载实质上是函 数的重载。
34
运 算 符 重 载
#include <iostream>
16
规则和限制
C++中不能够被重载的运算符有:
运 算 符 重 载
.
(成员访问运算符)
.*
∷ ?:
(成员指针访问运算符)
(域运算符) (条件运算符)
17
sizeof (长度运算符)
规则和限制(续)
只能重载C++语言中已有的运算符, 不可臆造新的。 不改变原运算符的优先级和结合性。 不能改变操作数个数。 经重载的运算符,其操作数中至少应该 有一个是自定义类型。 重载不能改变运算符运算对象(即操作 数)的个数。 重载运算符的函数不能有默认的参数。
24
void Complex::display() { cout << "(" << real << ", " << imag << ")" << endl; } int main() { //主函数 Complex c1(5, 4), c2(2, 10), c3;//定义复数类的对象 cout << "c1 = "; c1.display(); cout << "c2 = "; c2.display(); c3 = c1 - c2; //使用重载运算符完成复数减法 cout << "c3 = c1 - c2 = "; c3.display(); c3 = c1 + c2; //使用重载运算符完成复数加法 cout << "c3 = c1 + c2 = "; c3.display(); return 0; }
函数重载 运算符重载 虚函数
静态多态性(编译时的多态性) 动态多态性(运行时的多态性)
3
多态性的概念
+:
整数相加 单精度数相加 双精度数相加
4
多态性的例子
问题:用户能否根据自己的需要对C++已提供的运算符进行 重载,赋予它们新的含义,使之一名多用?
例 能否用”+”进行复数相加c2
32
运算符成员函数的设计
例如,后置单目运算符“++”重载的语法形式 如下: <函数类型>operator++(int); <对象>++;
使用后置单目运算符“++”的语法形式如下:
例8-2
运算符前置++和后置++重载为时钟类的成 员函数。 前置单目运算符,重载函数没有形参,对 于后置单目运算符,重载函数需要有一个 整型形参。 操作数是时钟类的对象。 实现时间增加1秒钟。
13
运算符函数
声明形式 函数类型 operator 运算符(形参)
运 算 符 重 载
{
......
}
重载为类成员函数时 参数个数=原操作数个数-1(后置++、--除外) 重载为非成员函数时 参数个数=原操作数个数, 且至少应该有一个自定义类型的形参。
14
运算符函数
原因是重载为类的成员函数时,如 果某个对象使用重载了的成员函数,自 身的数据可以直接访问,就不需要再放 在参数表中进行传递,少了的操作数就 是该对象本身。
23
Complex Complex::operator + (Complex &c2) { //重载运算符函数实现 return Complex(real + c2.real, imag + c2.imag); //创建一个临时无名对象作为返回值 } Complex Complex::operator - (Complex &c2) { //重载运算符函数实现 return Complex(real - c2.real, imag - c2.imag); //创建一个临时无名对象作为返回值 }


这两种方法的执行效率是完全不同的。 后者的执行过程是这样的:创建一个局部 对象c(这时会调用构造函数),执行 return语句时,会调用拷贝构造函数, 将c的值拷贝到主调函数中的一个无名临 时对象中。当函数operator+结束时, 会调用析构函数析构对象c,然后c消亡 。两种方法相比,前一种方法的效率高, 因为它是直接将一个无名临时对象创建到 主调函数中
问题举例——复数的运算
用“+”、“-”能够实现复数的加减运
相关文档
最新文档