相关疑难解决方法(0)

C++ 11 - 将非静态数据成员声明为"auto"

如果在声明中初始化了非静态数据成员,它们是否允许将非静态数据成员声明为"auto"?例如:

struct S
{
    auto x = 5;  // in place of 'int x = 5;', which is definitely allowed
};
Run Code Online (Sandbox Code Playgroud)

GCC 4.7拒绝上述代码,但它接受了int x = 5;.

假设这不是编译器错误,而是标准真的不允许它,为什么不呢?它与声明局部变量一样有用auto.

c++ variable-declaration auto c++11

46
推荐指数
2
解决办法
2万
查看次数

类成员初始化是在编译时还是在运行时进行?

在C++ 11中,引入了一个新功能,程序员可以在类的定义中初始化类成员变量,请参阅下面的代码:

struct foo
{ 
  int size = 3;
  int id   = 1;
  int type = 2;
  unsigned char data[3] = {'1', '2', '3'};
};
Run Code Online (Sandbox Code Playgroud)

这个初始化是在编译期间发生的,还是这个特性只是语法糖和成员变量在默认构造函数中初始化?

c++ c++11

27
推荐指数
1
解决办法
4412
查看次数

标签 统计

c++ ×2

c++11 ×2

auto ×1

variable-declaration ×1