小编kio*_*o89的帖子

了解C++结构大小

请考虑以下代码:

struct CExample  {
    int a; 
}            

int main(int argc, char* argv[]) {  

    CExample ce1;  
    CExample ce2;  

    cout << "Size:" << sizeof(ce1) << " Address: " << &ce1 << endl;   
    cout << "Size:" << sizeof(ce2) << " Address: " << &ce2 << endl;   

    CExample ceArr[2];
    cout << "Size:" << sizeof(ceArr[0])<< " Address: "<< &ceArr[0] <<endl;
    cout << "Size:" << sizeof(ceArr[1])<< " Address: "<< &ceArr[1] <<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出示例:
ce1:Size = 4,地址:0039FAA0
ce2:Size = 4,地址:0039FA94
ceArr [0]:Size = 4,Address:0039FA84
ceArr …

c++ struct sizeof

7
推荐指数
2
解决办法
2571
查看次数

在c ++ 11中对结构数组进行括号初始化

这是我的代码:

#include <string>

struct A
{
    int a;
    std::string sa;
};

int main()
{
    A arr[3]{};
}
Run Code Online (Sandbox Code Playgroud)

当我用gcc 4.8.2(在Ubuntu 14.04上)使用-std=gnu++11选项编译它时会出现以下错误:

example.cpp: In function ‘int main()’:
example.cpp:11:14: internal compiler error: in gimplify_init_constructor, at gimplify.c:4271
 A arr[3]{};
          ^
Run Code Online (Sandbox Code Playgroud)

为什么会抛出内部编译器错误?这是编译器错误吗?

c++ linux gcc c++11 list-initialization

4
推荐指数
1
解决办法
242
查看次数

std :: forward with pass-by-value参数

我正在阅读封装的多态性,我遇到了一段代码:

template <typename T>
struct Model<T> : Concept
{
    Model<T>(T impl) :
        mImpl(std::forward<T>(impl))
    {

    }
    virtual Concept* clone() const override
    {
        return new Model<T>(mImpl)
    }

    virtual void operator (const LogMessage::Meta& meta, const std::string& message) override
    {
        mImpl(meta, message);
    }

    T mImpl;
};
Run Code Online (Sandbox Code Playgroud)

在模型构造函数中转发impl有什么意义?

如果通过值传递参数,它是否有意义?

c++ pass-by-value perfect-forwarding c++11

4
推荐指数
1
解决办法
308
查看次数