#include<iostream>
using namespace std;
class Vector
{
private:
int *dwp;
int size;
void clone(const Vector v)
{
this->size=v.size;
this->dwp=new int[size];
for(int i=0;i<size;i++)
{
dwp[i]=v[i];//调用重载下标,相当于this->dwp[i]=v.dwp[i]
}
}
void dispose()
{
delete[] dwp; // 删除指针指向的空间,如果不删除,在调用析构函数的时候只会释放指针本身所占用的内存。
}
public:
//拷贝构造,
Vector(const Vector &v)
{
clone(v);
}
Vector(int s ):size(s),dwp(new int[s])
{
if(size<0)
dwp= NULL;
else
{
for(int i=0;i<size;i++)
{
dwp[i]=0;
}
} }
Vector(int *a,int s):size(s),dwp(new int[s])
{
for(int i=0;i<size;i++)
{
dwp[i]=a[i];
}
}
int get_size()const
{
return size;
}
//重载下标。 用于输入。
int& operator[](int index)
{
return dwp[index];
}
//重载下标, 用于输出。加引用的目的是避免产生零时变量,增加开销。
const int& operator[](int index) const
{
return dwp[index];
}
//重载 = 运算符
const Vector& operator=(const Vector& v)
{ if(this!=&v)
{
delete []dwp; //删除dwp指向的空间。
this->size=v.size;
dwp=new int[size]; //开辟新的空间。
for(int i=0;i<size;i++)
{
dwp[i]=v[i];
}
}
}
//析构函数
~Vector()
{
dispose();
}
};
//重载输出
ostream & operator<<(ostream& out,const Vector& v)
{
int s=v.get_size();
for(int i=0; i<s;i++)
{
out<<v[i]<<endl;
}
out<<endl;
return out;
}
//重载输入
istream& operator>>(istream&in,const Vector& v)
{
int s=v.get_size();
for(int i=0;i<s;i++)
{
in>>v[i];
}
return in;
}
int main()
{
int dwint[3]={1,3,5};
cout<<"=========v============"<<endl;
Vector v(dwint,3);
cout<<v; //调用重载输出 v.operator()
cout<<"=========v2============"<<endl;
Vector v2(v);
cout<<v2;
cout<<v2.get_size(); return 0;
}

c++ 拷贝构造练习的更多相关文章

  1. c++拷贝构造和编译优化

    #include <iostream> using namespace std; class MyClass { public: MyClass(); MyClass(int i); My ...

  2. C++ 构造函数、析构函数、拷贝构造、赋值运算符

    之所以要把它们放在一起,是因为在使用C/C++类语言的时候,很容易混淆这几个概念(对Java来说完全没有这样的问题,表示Javaor完全没有压力). 先建立一个测试类(包含.h和.cpp) //~ P ...

  3. C++ Primer笔记9_构造函数_拷贝构造(深拷贝与浅拷贝)

    1.构造函数: >构造函数是一个特殊的.与类同名的成员函数,用于给每一个成员设置适当的初始值. >构造函数不能有返回值,函数名与类名同样. >缺省构造函数时,系统将自己主动调用该缺省 ...

  4. C++拷贝构造&操作符重载

    头文件 DString.h如下 #ifndef __DSTRING_H #define __DSTRING_H #endif #include <stddef.h> class DStri ...

  5. C++对象的构造、析构与拷贝构造

    今天下午在研究虚函数的时候遇到了一个问题,觉得很有意思,记录一下. 先看代码: class Base { public: Base(int value) { m_nValue = value; cou ...

  6. 重点:QObject 的拷贝构造和赋值操作——私有

    QObject 中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域.因此所有继承 ...

  7. C++之旅:拷贝构造与友元

    拷贝构造与友元 拷贝构造是在构造一个对象的时候将已有对象的属性拷贝给新的对象:友元可以让一个类的所有属性(主要是private)对特定的类开放 拷贝构造 如果没有复写拷贝构造函数,系统会帮我们默认生成 ...

  8. C++ 进阶5 拷贝构造 深度复制 运算符重载

    C++ 进阶5 拷贝构造 深度复制 运算符重载 20131026 例子: 运行环境是G++ 编译, /* * main.cpp * *  Created on: 2013年10月26日 *      ...

  9. 拷贝构造和拷贝赋值、静态成员(static)、成员指针、操作符重载(day06)

    十七 拷贝构造和拷贝赋值 浅拷贝和深拷贝 )如果一个类中包含指针形式的成员变量,缺省的拷贝构造函数只是复制了指针变量的本身,而没有复制指针所指向的内容,这种拷贝方式称为浅拷贝. )浅拷贝将导致不同对象 ...

随机推荐

  1. linux下Qt问题cannot find -lGL collect2: error: ld returned 1 exit status

    fedora下解决 yum groupinstall "Development Tools" yum install mesa-libGL-devel ubuntu下解决 sudo ...

  2. 微软Azure云主机及blob存储的网络性能测试

    http://www.cnblogs.com/sennly/p/4137024.html 微软Azure云主机及blob存储的网络性能测试 1. 测试目的 本次测试的目的在于对微软Azure的云主机. ...

  3. JSF session的用法

    http://blog.csdn.net/finelife/article/details/1608632 1.写入sessionObject sessionName = "name&quo ...

  4. linux内核中与进程相关的数据结构(基于linux3.16-rc4)

    1.进程描述符 struct task_struct { volatile long state; ....... struct list_head tasks; ....... struct mm_ ...

  5. HW5.31

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  6. Thinking in java——Generics

    ​Ordinary classes and methods work with specific types: either primitives or class types. If you are ...

  7. ALM11 OTA API接口的问题

    ALM11 在安装的时候好像不会自动加载OTA接口. 正常情况下, OTA的接口文件的路径为: C:\Program Files\Common Files\Mercury Interactive\Qu ...

  8. 如何关闭log4j中配置的spring或者hibernate的日志信息

    通常在建立一个web项目的时候,我们通常需要为其配置日志,以便了解启动过程中发生了什么,如果启动过程中发生了错误,则可以很方便的查看错误的信息,但是在项目部署到服务器上时,打印日志信息,需要耗费大量的 ...

  9. hadoop 1.2 集群搭建与环境配置

    一.虚拟机环境 见我的另一篇博客http://www.cnblogs.com/xckk/p/6000881.html, 需要安装JDK环境,centos下安装JDK可参考: http://www.ce ...

  10. cas 3.5.2 登录成功后,如何返回用户更多信息?

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...