`
bliuqing
  • 浏览: 67238 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

C++构造函数 拷贝赋值

    博客分类:
  • C++
阅读更多
class MyString 
{
public:
MyString();
MyString(int newsize);
MyString(const MyString& ms);
const MyString& operator=(const MyString& ms);
virtual ~MyString();
private:
int *ptr;
int size;

};
/////
MyString::MyString(int newsize)
{

size = newsize;
ptr = new int[size];
for(int i=0; i < size; i++){
ptr[i] = 0;
}
cout<<"construct is executing size is "<<size<<endl;

}
MyString::MyString(const MyString& ms){

size = ms.size;
ptr = new int[size];
for(int i = 0; i < size ; i++){
ptr[i] = ms.ptr[i];
}
cout<<"copy construct is executing.."<<"address of ptr is "<<ptr<<endl;
}
const MyString& MyString::operator=(const MyString& ms){
cout<<"operator is executing"<<endl;
if(this != &ms){
delete[] ptr;
size = ms.size;

ptr = new int[size];
for(int i = 0; i < size ; i++){
ptr[i] = ms.ptr[i];
}
return *this;
}
}

MyString::~MyString()
{
cout<<"desturct address of ptr is "<<ptr<<endl;
delete[] ptr;

}
////////////
MyString play(MyString a)
{
return a;
}
int main(int argc, char* argv[])
{
//printf("Hello World!\n");
/*testint t1 = play(4);
testint t2 = play(5);
testint t3 = play(t1);*/
MyString ms1 = MyString(5);
MyString ms2 = play(ms1);

return 0;
}
////
输出结果:


注意将play(ms1)的返回值赋值给ms2,执行拷贝函数。然后返回值再析构
  • 大小: 6.2 KB
分享到:
评论

相关推荐

    详解C++中构造函数,拷贝构造函数和赋值函数的区别和实现

    C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它...

    C++ 拷贝构造函数 赋值构造函数

    C++ 拷贝构造函数 赋值构造函数 解释

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

    ### C++拷贝构造函数与赋值操作详解 在C++编程中,拷贝构造函数与赋值操作是实现类的拷贝管理的关键机制。它们主要用于处理类的对象之间的拷贝和复制过程,尤其是在处理含有动态分配内存的类时尤为重要。 #### ...

    详解C++ 拷贝构造函数和赋值运算符

    在C++中,良好的编程习惯要求赋值运算符(又称拷贝赋值操作符)应该实现“自赋值安全”和“右结合性”,即`a = a`应保持不变,且连续赋值如`a = b = c`应正确工作。 深拷贝和浅拷贝是拷贝过程中涉及到的一个关键...

    不要轻视拷贝构造函数与赋值函数

    在C++编程中,拷贝构造函数和赋值函数是理解类的重要组成部分。虽然这两种构造函数通常由编译器自动提供,但它们对于确保数据安全性和类的行为正确性至关重要。本文将深入探讨拷贝构造函数与赋值函数的重要性,并...

    C++实现 类string的 普通构造函数, 拷贝构造函数 析构函数 和赋值函数

    了解这些基本的构造函数和赋值运算符对于理解C++对象的生命周期和行为至关重要。在实际编程中,这些函数的正确实现可以确保代码的稳定性和效率,同时避免内存泄漏和其他潜在错误。通过自定义`std::string`类的构造...

    C++面试试题-拷贝构造函数

    ### C++面试试题详解:拷贝构造函数 #### 背景介绍 在C++编程中,拷贝构造函数是一个非常重要的概念,尤其对于那些处理复杂数据结构或资源管理的程序来说更是如此。拷贝构造函数是类的一种特殊成员函数,用于创建一...

    拷贝构造函数和赋值运算符的区别 (2).docx

    在C++编程中,拷贝构造函数和赋值运算符是两个至关重要的概念,它们都是处理对象间的复制行为,但有着明显的区别和各自的应用场景。 **拷贝构造函数** 拷贝构造函数是一种特殊的构造函数,它的主要任务是在创建新...

    拷贝构造函数和赋值运算符的区别.docx

    在C++编程中,拷贝构造函数和赋值运算符是两个至关重要的概念,它们都是用于处理对象间的复制行为,但有着本质的区别。 **拷贝构造函数** 拷贝构造函数是一种特殊的构造函数,它在创建新对象时,使用已经存在的...

    关于拷贝构造函数和赋值运算符

    在C语言编程中,当我们设计一个包含动态内存分配的类时,拷贝构造函数和赋值运算符的定义显得尤为重要。这是因为C语言是一种手动管理内存的语言,动态分配的内存不会自动被拷贝或复制,因此我们需要显式地定义如何...

    1. 拷贝构造与拷贝赋值1

    在C++中,为了实现深拷贝,我们需要在拷贝构造函数或拷贝赋值操作符中为指针成员分配新的内存并复制数据。如示例中的深拷贝实现`Buz::Buz(const Buz &other)`,通过`new`关键字创建了一个新的`int`数组,并使用`...

    c++中拷贝构造函数实例

    在C++编程语言中,拷贝构造函数是一个特殊类型的构造函数,它的主要作用是初始化一个新对象为已存在对象的副本。这个过程被称为浅复制或深复制,具体取决于类的成员变量类型。对于初学者来说,理解拷贝构造函数的...

    c++构造函数小测验

    本次小测验的主题是C++构造函数的相关知识点,包括构造函数的种类、调用时机以及构造函数的实现方式等。 首先,我们看到给定的代码片段中出现了Student类和Sprite类的定义,这两个类都是C++中类的典型示例。Student...

    C++ 赋值构造函数注意点介绍

    您可能感兴趣的文章:浅谈c++构造函数问题,初始化和赋值问题详解C++ 拷贝构造函数和赋值运算符详解C++中对构造函数和赋值运算符的复制和移动操作C++中复制构造函数和重载赋值操作符总结深入C++中构造函数、拷贝构造...

    关于拷贝构造函数和赋值函数.txt

    在C++编程语言中,拷贝构造函数和赋值操作符是两个非常重要的概念,它们主要用于处理类的对象之间数据的复制问题。下面将对这两个概念进行详细介绍。 ### 拷贝构造函数 拷贝构造函数是一种特殊的构造函数,它用于...

    C++复制构造函数详解

    此外,复制构造函数与默认构造函数、析构函数和赋值运算符一起构成了C++的特殊成员函数,这些函数对对象生命周期的管理起着关键作用。熟练掌握这些函数的使用,能够帮助开发者编写出更加安全、可维护的代码。

    拷贝构造函数和赋值运算符的区别 (2).pdf

    在编程领域,特别是C++语言中,理解和正确使用拷贝构造函数和赋值运算符是非常重要的概念。这两个机制都是处理对象复制的过程,但它们在使用场景和行为上有所区别。 首先,构造函数是用于初始化新创建的对象的特殊...

    拷贝构造函数和赋值操作符号的重载.pdf

    在C++编程中,拷贝构造函数和赋值操作符重载是两个非常重要的概念,尤其是在处理包含动态分配内存的类时。拷贝构造函数和赋值操作符的正确实现对于确保对象之间的独立性和防止资源泄露至关重要。 拷贝构造函数是一...

    拷贝构造函数和赋值操作符号的重载.docx

    在C++编程中,拷贝构造函数和赋值操作符重载是两个非常重要的概念,尤其是在处理包含动态分配资源的对象时。拷贝构造函数和赋值操作符是保证对象正确复制和赋值的关键。 拷贝构造函数是一种特殊的构造函数,其主要...

Global site tag (gtag.js) - Google Analytics