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

被折叠的 条评论
为什么被折叠?



