区别构造函数,复制构造函数和赋值操作符函数

本文通过创建Example类并深入探讨其构造函数、复制构造函数和赋值操作符函数的实现,以及如何在不同场景下使用这些函数,包括作为非引用形参、引用形参、动态分配、函数返回值、赋值操作、作为vector容器元素等。详细解析了构造函数、复制构造函数和赋值操作符函数在C++编程中的应用,并对比了不同编译器下的处理差异。

1 问题

   定义Example类,该类给出了构造函数,复制构造函数和赋值操作符函数,各个成员函数输出自己的函数名。主函数里以不同方式使用Example对象。

  作为非引用形参,引用形参,动态分配,函数返回值,赋值操作,作vector容器元素,以此研究构造函数,复制构造函数和赋值操作符函数。

2 源码

2.1 Example.h

#ifndef _TEST_H_
#define _TEST_H_

#include <iostream>
#include <vector>

class Example
{
public:
	//构造函数
	Example():example(0)
	{
	    >

2.2 Example.cpp

#include "TEST.h"
using>

2.3>

3 测试结果

3.1 VC6.0 下

3.2 vs2010下

4  注意

(1)作为vector的元素时,vc6.0与vs2010的处理完全不同,详见上述两图红色矩形的内容。

(2)对于堆内存的处理,如图一下,程序结束时,对指针pExample所指的堆内存,vc6.0是不会主动释放,故会产生内存泄露。


5 参考文献

[1]C++ Primer(中文版) 作者:Stanley B.Lippman 等人(著)    李师贤 等人(译)




6 补充

new与构造函数,复制构造函数的关系

在原Exmaple类里另添加一个新的带一个参数的构造函数:

        Example(int>

std::cout<<"\t\t\tExample(i)"<<std::endl;

}

在 new 操作符的背后,编译器做了两件事 :

1 计算 new后申请的数据的大小,然后调用函数 operator new开辟空间。

2 调用相应的构造函数(或复制构造函数)。

参考链接:

http://blog.youkuaiyun.com/hongjiqin/article/details/3941718     题目: new的VC编译器实现             作者:hongjiqin

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值