我打算创建一个只有静态成员和静态函数的类.其中一个成员变量是一个数组.是否可以在不使用构造函数的情况下初始化它?我现在有很多链接错误......
class A
{
public:
static char a[128];
static void do_something();
};
Run Code Online (Sandbox Code Playgroud)
你会如何初始化[128]?为什么我不能像在C中那样直接指定它的值来初始化[128]?
a[128] = {1,2,3,...};
Run Code Online (Sandbox Code Playgroud)
Bri*_*ndy 37
您可以在.cpp文件中执行此操作:
char A::a[6] = {1,2,3,4,5,6};
Run Code Online (Sandbox Code Playgroud)
小智 11
如果您的成员在初始化后不会更改,C++11 允许您将其全部保留在类定义中constexpr:
class A
{
public:
static constexpr const char a[] = {1,2,3}; // = "Hello, World"; would also work
static void do_something();
};
Run Code Online (Sandbox Code Playgroud)
只是想知道,为什么需要在构造函数中初始化它?
通常,您将数据成员设置为静态,因此您无需创建实例即可访问该成员.只有在创建实例时才会调用构造函数.
非const静态成员在类声明之外(在实现文件中)初始化,如下所示:
class Member
{
public:
Member( int i ) { }
};
class MyClass
{
public:
static int i;
static char c[ 10 ];
static char d[ 10 ];
static Member m_;
};
int MyClass::i = 5;
char MyClass::c[] = "abcde";
char MyClass::d[] = { 'a', 'b', 'c', 'd', 'e', '\0' };
Member MyClass::m_( 5 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69490 次 |
| 最近记录: |