IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【c++ 】Linux和Visual Studio拷贝构造函数区别 -> 正文阅读

[开发工具]【c++ 】Linux和Visual Studio拷贝构造函数区别

函数以值的方式返回对象时,可能会调用拷贝构造函数(VS会调用,Linux不会,g++编译器做了优化)。

实例代码:

class CGirl12                 // 超女类CGirl8。
{
public:
    string    m_name;                                      // 姓名属性。
    int         m_age;                                     // 年龄属性。

    // 没有参数的普通构造函数。  
    CGirl12() { m_name.clear(); m_age = 0;  cout << "调用了CGirl8()构造函数。\n"; }

    // 默认拷贝构造函数。  
    CGirl12(const CGirl12& gg) { m_name ="漂亮的" + gg.m_name; m_age = gg.m_age - 1;  cout << "调用了CGirl8(const CGirl8 &gg)拷贝构造函数。\n"; }

    // 析构函数。  
    ~CGirl12() { cout << "调用了~CGirl8()\n"; }

    // 超女自我介绍的方法,显示姓名和年龄。
    void show() { cout << "姓名:" << m_name << ",年龄:" << m_age << endl; }
};


CGirl12 func12()
{
    CGirl12 g1;
    g1.m_name = "西施";  g1.m_age = 23; 
    cout <<"对象g1地址:"<< &g1<<endl;
    return g1;
}

void main()
{
    CGirl12 g2 = func12();
    cout <<"对象g2地址:"<<&g2<<endl;
    g2.show();
}

Visual Studio
可以发现在vs中,调用了拷贝构造函数,类地址也是不同的
在这里插入图片描述

Linux
类地址是一样的,所以没有调用拷贝构造函数,g++编译器做了优化,g++认为没必要重新创建对象,可以不销毁func12()函数中创建的对象g1,在main函数中,换个变量名接受类的返回继续用就行了,更科学
在这里插入图片描述

拷贝函数其他细节

? 访问权限必须是public。

? 函数名必须与类名相同。

? 没有返回值,不写void。

? 如果类中定义了拷贝构造函数,编译器将不提供默认的拷贝构造函数。

? 以值传递的方式调用函数时,如果实参为对象,会调用拷贝构造函数。

? 拷贝构造函数可以重载,可以有默认参数。
类名(…,const 类名& 对象名,…){…}

? 如果类中重载了拷贝构造函数却没有定义默认的拷贝构造函数,编译器也会提供默认的拷贝构造函数。

参考视频:哔哩哔哩码农论坛

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:55:18  更:2022-10-17 12:57:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:20:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码