c++(重载等号=操作为深拷贝)
- // ConsoleApplication19.cpp : 定义控制台应用程序的入口点。
- //
- #pragma warning(disable:4996)
- #include "stdafx.h"
- using namespace std;
- #include <iostream>
- class A {
- public:
- //=等号操作默认的是浅拷贝 这里重载=为深拷贝 当类里出现指针变量 用等号是浅拷贝
- A& operator=(A& obj)
- {
- if (this->pc != NULL)
- {
- this->a = ;
- delete this->pc;
- }
- this->a = obj.a;
- this->pc = new char[obj.a];
- return *this;
- }
- A() {}
- A(int a)
- {
- this->a = a;
- this->pc = new char[a];
- }
- ~A()
- {
- if (this->pc != NULL)
- {
- delete pc;
- }
- cout << "A析构函数"<< endl;
- }
- private:
- int a;
- char * pc;
- };
- class B {
- public:
- B()
- {
- }
- private:
- int b1;
- int b2;
- A a1;
- A a2;
- };
- void displayObj()
- {
- A a1();
- A a2;
- a2 = a1;
- }
- void main()
- {
- displayObj();
- system("pause");
- }
c++(重载等号=操作为深拷贝)的更多相关文章
- c++-重载等号,数组,指针,字符串类
重载 重载=操作符 1先释放旧对象资源 2用一个对象=给另外一个对象 3函数返回值当左值 返回一个引用 4 数组类 Array& operator=(Array& a1); 5 字符串 ...
- C++ 赋值运算符'='的重载(浅拷贝、深拷贝)
01 赋值运算符重载的需求 有时候希望赋值运算符两边的类型可以不匹配,比如:把一个 int 类型变量赋值给一个Complex(复数)对象,或把一个 char* 类型的字符串赋值给一个字符串对象,此时就 ...
- SQL Server的NTEXT类型不支持等号"="操作(转载)
SQL SERVER – Fix: Error : 402 The data types ntext and varchar are incompatible in the equal to oper ...
- C++等号操作符重载
在新学操作符重载时最令人头疼的可能就是一些堆溢出的问题了,不过呢,只要一步步的写好new 与 delete.绝对不会有类似的问题. 当时我们编译可以通过,但是运行会出错,因为对象s1与s2进行赋值时, ...
- STL——容器(Map & multimap)的拷贝构造与赋值
1. Map & multimap 的拷贝构造与赋值 map(const map &mp); //拷贝构造函数 map& operator=(con ...
- C++ //深拷贝与浅拷贝 //浅拷贝 : 简单的赋值拷贝操作 //深拷贝: 在堆区重新申请空间 进行拷贝操作
1 //深拷贝与浅拷贝 2 3 //浅拷贝 : 简单的赋值拷贝操作 4 //深拷贝: 在堆区重新申请空间 进行拷贝操作 5 6 7 #include <iostream> 8 using ...
- Cpp下的深拷贝与浅拷贝探究
下面,通过代码来说说C++中的深浅拷贝 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; cl ...
- C++运算符重载总结(真的很详细了w(゚Д゚)w)
C++运算符重载总结(真的很详细了w(゚Д゚)w) 概述 运算符重载可以使得一些特殊类型参与运算,我是这样理解的. 使用友元形式的运算符重载 //一般形式 class x{ friend 返回类型 o ...
- C++学习笔记13:运算符重载(赋值操作符2)
移动语义 完成所有权的移交,当拷贝构造和赋值构造时,目标对象的所有权必须移交给我们的新的对象,原始对象将丧失所有权,_p指针将不再指向原来的那个数组: 左值与右值 C原始定义 左值:可以出现在赋值号的 ...
随机推荐
- LeetCode Delete Operation for Two Strings
原题链接在这里:https://leetcode.com/problems/delete-operation-for-two-strings/description/ 题目: Given two wo ...
- fn project 扩展
目前支持的扩展方式 Listeners - listen to API events such as a route getting updated and react accordingly. ...
- CLR值类型和引用类型
知识点:引用类型.值类型.装箱.拆箱 CLR支持两种类型:引用类型和值类型.引用类型在堆上分配内存,值类型在线程栈上分配内存.值类型与引用类型如下所示: 值类型对象有两种表示形式:未装箱和已装箱.将一 ...
- bzoj 4566 找相同字符 —— 广义后缀自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4566 建出两个串的广义后缀自动机: 统计每个点在两个串中出现次数的子树和,其实就是在两个串中 ...
- 利用bat合并两个hex文件
单片机程序如果有IAP功能的话,就会生成两个hex文件,一个是Boot,一个是App,如果给让生产烧录两个文件,就会降低生产效率,所以在烧录前最好将两个文件合并成一个文件,烧录一次即可,合并方法如下: ...
- android中MediaPlayer类的用法
用法直接看sample package com.turtle920.androidaudioprocess; import android.media.MediaPlayer; import andr ...
- php跨域问题
http://www.cnblogs.com/xiezn/p/5651093.html
- 简述FPGA时序约束理论
FPGA时序约束简介. 时序约束的场景: 在简单电路中,当频率较低时,数字信号的边沿时间可以忽略时,无需考虑时序约束.但在复杂电路中,为了减少系统中各部分延时,使系统协同工作,提高运行频率,需要进行时 ...
- fullCalendar动态获取数据
fullCalendar http://fullcalendar.io/docs/event_data/events_function $('#calendar').fullCalendar({ he ...
- MariaDB 脚本
研究MariaDB, 需要mock up一些假数据: 生成n个长度整型数的函数rand_num: CREATE DEFINER=`root`@`localhost` FUNCTION `rand_nu ...