码迷,mamicode.com
首页 > 编程语言 > 详细

C++类的运用 和 三大函数

时间:2016-01-04 19:52:00      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:

在《数据结构与算法分析C++描述》一书中给出了三段代码,简单描述了C++类的接口、实现、与调用:

#ifndef INTCELL_H_INCLUDED
#define INTCELL_H_INCLUDED

class IntCell
{
    public :
        explicit IntCell( int initialValue = 0 );
        int read() const;
        void write( int x );

    private :
        int storedValue;
};

#endif // INTCELL_H_INCLUDED

新建文件实现接口:

#include "IntCell.h"

IntCell::IntCell( int initialValue ) : storedValue( initialValue )
{
}

int IntCell::read() const
{
    return storedValue;
}

void IntCell::write( int x )
{
    storedValue = x;
}

并使用该类:

#include <iostream>
#include "IntCell.h"
#include "IntCell.cpp"

using namespace std;

int main( void )
{
    IntCell m;

    m.write( 5 );
    cout << "Cell contents:" << m.read() << endl;

    return 0;
}

 

  在多数情况下,都可以采用编译器提供的默认函数:析构函数、复制构造函数和operator=。有些时候却不行。试想一个含有指针成员的C++类,在用对象B对对象A进行初始化时,按照默认的复制方法,B的指针成员的值赋值给了A的指针成员:

技术分享

它们包含的指针都指向了同一个对象,这被称为是浅复制。一般我们期望得到的是对整个对象进行克隆的深复制。

技术分享

所以,当一个类含有的数据成员为指针并且深复制很重要的时候,一般的做法就是自己实现三大函数。

C++类的运用 和 三大函数

标签:

原文地址:http://www.cnblogs.com/ZRBYYXDM/p/5099997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!