您的位置:首页 > 游戏 > 手游 > 深圳公司网站制作企业_ui设计师的发展前景_百度排行榜风云榜_百度推广账户搭建

深圳公司网站制作企业_ui设计师的发展前景_百度排行榜风云榜_百度推广账户搭建

2024/12/23 5:00:01 来源:https://blog.csdn.net/a915227127/article/details/142313721  浏览:    关键词:深圳公司网站制作企业_ui设计师的发展前景_百度排行榜风云榜_百度推广账户搭建
深圳公司网站制作企业_ui设计师的发展前景_百度排行榜风云榜_百度推广账户搭建
  1. 定义和功能

    • 拷贝构造函数

      • 拷贝构造函数是一种特殊的构造函数,用于创建一个新对象,该新对象是作为另一个同类型对象的副本而创建的。其函数原型通常为类名(const 类名& other)(在 C++ 11 之前,const也可省略)。例如:
        class MyClass {
        public:MyClass(const MyClass& other);
        };
      • 它主要用于初始化新对象,在以下几种情况下被调用:
        • 用一个已存在的对象初始化一个新对象时,如MyClass obj1; MyClass obj2 = obj1;或者MyClass obj3(obj1);
        • 函数参数按值传递对象时,例如void func(MyClass param); MyClass obj; func(obj);,在调用func函数时,会调用拷贝构造函数来创建param对象。
        • 函数返回值按值返回对象时,如果函数返回一个MyClass类型的对象,会调用拷贝构造函数创建一个临时对象用于返回。
      • 拷贝赋值运算符
        • 拷贝赋值运算符用于将一个对象的值赋给另一个已存在的同类型对象。其函数原型为类名& operator=(const 类名& other)。例如:
          class MyClass {
          public:MyClass& operator=(const MyClass& other);
          };
        • 当执行类似MyClass obj1, obj2; obj2 = obj1;这样的操作时,就会调用拷贝赋值运算符。它的任务是将obj1的状态复制到obj2中,并且要正确处理资源的释放和重新分配(如果对象管理资源,如动态分配的内存等)。
        • 调用时机

          • 拷贝构造函数
            • 在对象创建时被调用,是对象初始化过程的一部分。
          • 拷贝赋值运算符
            • 在已存在的对象被赋予新值时被调用。
        • 对对象状态的影响

          • 拷贝构造函数
            • 创建一个全新的对象,并从另一个对象初始化它的初始状态。
          • 拷贝赋值运算符
            • 修改一个已存在对象的状态,使其与另一个对象相同。
        • 示例代码对比

          • 拷贝构造函数示例
            class Person {
            private:std::string name;int age;
            public:Person(const Person& other) : name(other.name), age(other.age) {std::cout << "拷贝构造函数被调用" << std::endl;}
            };
            int main() {Person p1;Person p2 = p1; // 调用拷贝构造函数return 0;
            }

          • 拷贝赋值运算符示例
            class Person {
            private:std::string name;int age;
            public:Person& operator=(const Person& other) {if (this!= &other) {name = other.name;age = other.age;}std::cout << "拷贝赋值运算符被调用" << std::endl;return *this;}
            };
            int main() {Person p1;Person p2;p2 = p1; // 调用拷贝赋值运算符return 0;
            }

 

喜欢可以点点关注!咱们下期见!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com