首页 > 其他 > 详细

clang++和g++编译行为差异

时间:2021-08-17 14:46:37      阅读:11      评论:0      收藏:0      [点我收藏+]
class A {
public:
    A():aa(42) {
        std::cout <<"My aaa=> uninitialize:" aaa << std::endl;
        aaa = aa;
        std::cout <<"My aaa=> " aaa << std::endl;
    }
private:
    long long aa;
    long long aaa;
    char
};

分别编译这段代码结果如下:

g++ clang++
long long aaa => 0 aaa => 948888123213
char 0 0
char* 0 0x3228f100

由此可见,c++关于class member的初始化之前的动作视编译器而定。
可以推测,g++通常会把数值类型和指针置位0,clang++对此有着不同的设定。为了程序的健壮性,最好还是在构造函数内初始化所有值。

clang++和g++编译行为差异

原文:https://www.cnblogs.com/uttep/p/15150946.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!