打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Effective C++学习笔记之copy构造函数和default函数和copy赋值函数(operator=)

1 、C++一个空的类里面一般默认的函数

比如我们写 

class A {

};

一般里面系统会给你哪些默认函数呢?

class A
{
public:
    A(){}    //default函数
    ~A(){}   //析构函数
    A(const A& a) {}  //copy构造函数
    A& operator= (const A& a) {} //copy assignment操作符
};

一般上面的函数都会有,而且是inline函数 。

A a1;  //default构造函数
A a2(a1); //copy构造函数
a1 = a2; //copy assignment操作符
A a3 = a1; //copy构造函数

为什么这里A a3 = a1;是copy构造函数,一个新的对象定义,就一定有有构造函数出现,不可能是copy 赋值

我们这里可以这样理解A a3 = a1;和A a3(a1);是等价的,好了,我自己用代码测试下。

2 测试代码

#include <iostream>

using namespace std;

class A
{
public:
    A() {
        std::cout << "A(){}" << std::endl;
    }
    ~A() {
        std::cout << "~A()" << std::endl;
    }
    A(const A& a) {
        std::cout << "A(const A&)" << std::endl;
    }
    A& operator= (const A& a) {
        std::cout << "A& operator=(const A& a)" << std::endl;
    }

};

int main()
{
    A a1;
    A a2(a1);
    a1 = a2;
    A a3 = a1;
    return 0;
}

 

3 运行结果

A(){}
A(const A&)
A& operator=(const A& a)
A(const A&)
~A()
~A()
~A()
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C++拷贝构造函数
C++函数返回值为对象时,构造析构函数的执行细节
C++提高:拷贝构造函数
C++开发者都应该使用的10个C++11特性
C++11并发之std::thread
构造函数的理解和应用场景
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服