zoukankan      html  css  js  c++  java
  • 相同代码不同的编译结果

    QT

    main.cpp

    #include <iostream>
    #include "testclass.h"
    using namespace std;
    TestClass test(void){
        TestClass t;
        return t;
    }
    int main()
    {
        TestClass t = test();
        cout << "Hello World!" << endl;
        return 0;
    }

    testclass.h:

    #ifndef TESTCLASS_H
    #define TESTCLASS_H
    class TestClass
    {
    public:
        TestClass();
        TestClass(const TestClass &testClass);
    };
    #endif // TESTCLASS_H

    testclass.cpp

    #include "testclass.h"
    #include <iostream>
    using namespace std;
    TestClass::TestClass()
    {
        cout<<"test class"<<endl;
    }
    TestClass::TestClass(const TestClass &testClass)
    {
        cout<<"copy constructor"<<endl;
    }

    运行结果:

    Vs

    main.cpp

    #include <iostream>
    #include "TestClass.h"
    TestClass test(){
        TestClass t;
        return t;
    }
    using namespace std;
    int main(){
        TestClass t1 = test();
        cout << "letben" << endl;
        system("pause");
        return 0;
    }

    TestClass.h

    #pragma once
    class TestClass
    {
    public:
        TestClass();
        TestClass(const TestClass &testClass);
        ~TestClass();
    };

    TestClass.cpp

    #include "TestClass.h"
    #include <iostream>
    using namespace std;
    TestClass::TestClass()
    {
        cout << "testClass" << endl;
    }
    TestClass::TestClass(const TestClass &testClass){
        cout << "copy constructor" << endl;
    }
    TestClass::~TestClass()
    {
    }

    运行结果:

    所以C++是语言,而java是一种产品。

    产品的制式应该是有规范可言的。对于语言,不同的厂商在认定过程中,所遵循的标准也不相同,所以在不同的编译环境下,编译结果不同,在不同的操作系统下,表现形式也不同,这就引来了程序移植的概念,而java只要有java虚拟机的存在,就可以无伤跑通各种平台。

    QT编译的时候,对代码进行了优化,那里就认为是一个对象,所以没有调用复制构造函数,但是对于vs来讲,这很明显是复制构造函数。

  • 相关阅读:
    Java虚拟机的内存模型
    JAVA 对文件的操作
    JAVA 读取 YAML 文件
    Nginx 502 问题解决 及 安装
    Python pdb 调试 命令
    pycharm设置鼠标控制字体大小
    ISO9126 软件质量模型
    人生苦短我学Java9面向对象三大特性之多态 广深
    Golang微服务入门到精通之路3类的封装/继承/多态/接口类型 广深
    人生苦短我学Java10final关键字/代码块/抽象类 广深
  • 原文地址:https://www.cnblogs.com/letben/p/5295131.html
Copyright © 2011-2022 走看看