1 / 6
文档名称:

C 构造函数详解及显式调用构造函数.doc

格式:doc   大小:536KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C 构造函数详解及显式调用构造函数.doc

上传人:511709291 2022/1/25 文件大小:536 KB

下载得到文件列表

C 构造函数详解及显式调用构造函数.doc

相关文档

文档介绍

文档介绍:word
word
标准文档
word
C++构造函数详解与显式调用构造函数
c++类的构造函数详解 一、 构造函数是干什么的class Counter{public:// 类Counter的构造函数// 特点:以类名作为函数名,4 = c2; // 注意和 = 运算符重载区分,这里等号左边的对象不是事先已经创建,故需要调用拷贝构造函数,参数为c2//这一点特别重要,这儿是初始化,不是赋值。其实这儿就涉与了C++中的两种初始化的方式:复制初始化和赋值初始化。其中c5采用的是复制初始化,而c4采用的是赋值初始化,这两种方式都是要调用拷贝构造函数的。
word
word
标准文档
word
区别:
初始化:被初始化的对象正在被创建
赋 值:被赋值的对象已经存在}三、思考与测验1. 仔细观察复制构造函数plex(const plex & c){// 将对象c中的数据成员值复制过来m_real = ;m_img = ;} 为什么函数中可以直接访问对象c的私有成员?答:〔网上〕因为拷贝构造函数是放在本身这个类里的,而类中的函数可以访问这个类的对象的所有成员,当然包括私有成员了。2. 挑战题,了解引用与传值的区别plex test1(const plex& c){return c;}plex test2(const plex c){return c;}plex test3(){static plex c(,);return c;}plex& test4(){static plex c(,);return c;} void main(){plex a,b; // 下面函数执行过程中各会调用几次构造函数,调用的是什么构造函数? test1(a);test2(a); b = test3();b = test4(); test2();// 下面这条语句会出错吗?test1(); //test1( plex( )) 呢?}答:
为了便于看构造函数的调用效果,我将类重新改一下,添加一些输出信息,代码如下:
View Code
下面是程序运行结果:
#include <iostream>usingnamespace std;class plex{ private :double m_real;double m_imag;int id;staticint counter;public:// 无参数构造函数plex(void){m_real = ;m_imag = ;id=(++counter);cout<<"plex(void):id="<<id<<endl;}// 一般构造函数〔也称重载构造函数〕plex(double real, double imag){m_real = real;m_imag = imag; id=(++counter);cout<<"plex(double,double):id="<<id<<endl;}// 复制构造函数〔也称为拷贝构造函数〕plex(const plex & c){// 将对象c中的数据成员值复制过来m_real = ;m_imag = ;id=(++counter);cout<<"p