拷贝构造函数

原创 2015年07月07日 15:36:53

下面是关于拷贝构造函数的使用。


#include <iostream>
#include <string.h>
class CVector{
        std::string *ptr;
    public:
        //default constructor
        CVector(){
            ptr = new std::string;
        }
        //constructor with one parameter
        CVector(std::string s){
            ptr = new std::string(s);
        }
        //destructor
        ~CVector(){
            delete ptr;
        }
        // copy constructor
        CVector(const CVector& c) : ptr(new std::string(c.getContent())){}   //因为这里产生了一个恒定对象而其恒定对象只能调用 恒定函数getContent
        // get content
        const std::string &getContent() const{   //所以需要将getContent变成恒定函数 否则会报错
            return *ptr;
        }
};
int main(){
    CVector s("ysh");
    CVector temp(s);
    std::cout << temp.getContent() << std::endl;
    return 0;
}


如果未将getContent设置为const函数,就会报一下错误

/ubuntu/workspace/Tom/static.cpp:19:70: error: passing ‘const CVector’ as ‘this’ argument of ‘const string& CVector::getContent()’ discards qualifiers [-fpermissive]                                                                                
         CVector(const CVector& c) : ptr(new std::string(c.getContent())){}         


相关文章推荐

C++中拷贝构造函数的使用

  • 2012年07月29日 08:56
  • 275KB
  • 下载

拷贝构造函数

  • 2014年03月10日 22:22
  • 35KB
  • 下载

C++初级主题--(5)拷贝构造函数

一.概念 同一个类的对象在内存中有完全相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员,而函数成员是共用的(只有一份拷贝)。在建立对象时可用同一类的另一个对...

C++拷贝构造函数和赋值操作

  • 2012年01月10日 13:51
  • 3KB
  • 下载

含指针变量的类需重新声明拷贝构造函数和赋值操作符

看下面一个表示string对象的类: // 一个很简单的string类 class string { public: string(const char *value); ~...

拷贝构造函数..........

  • 2008年09月11日 23:26
  • 3KB
  • 下载

析构函数和拷贝构造函数

  • 2012年08月30日 13:16
  • 131KB
  • 下载

继承的时候,子类的拷贝构造函数和重载运算符的实现

#include using namespace std; class Parent { public: Parent(){} Parent(int a):m_a(a){} Pa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:拷贝构造函数
举报原因:
原因补充:

(最多只允许输入30个字)