相关疑难解决方法(0)

返回指向静态局部变量的指针是否安全?

我正在使用一些代码,这些代码广泛使用返回指向静态局部变量的指针的习惯用法.例如:

char* const GetString()
{
  static char sTest[5];
  strcpy(sTest, "Test");
  return sTest;
}
Run Code Online (Sandbox Code Playgroud)

我认为这是安全的吗?

PS,我知道这是做同样事情的更好方法:

char* const GetString()
{
  return "Test";
}
Run Code Online (Sandbox Code Playgroud)

编辑: 道歉,功能签名当然应该是:

const char* GetString();
Run Code Online (Sandbox Code Playgroud)

c static

41
推荐指数
4
解决办法
3万
查看次数

静态变量的地址

我想尝试一个简单的类来进行唯一的ID转换.我正在考虑添加一个静态方法:

class A {
  static int const *GetId() {
    static int const id;
    return &id;
  }
};
Run Code Online (Sandbox Code Playgroud)

然后每个类将通过唯一标识int const *.这保证有效吗?返回的指针真的是唯一的吗?有没有更简单的解决方案?

我也想过指向std::type_info:

class A {
  static std::type_info const *GetId() {
    return &typeid(A);
  }
};
Run Code Online (Sandbox Code Playgroud)

那个更好吗?

编辑:

我不需要使用id进行序列化.我只想识别一小组基类,并希望某些类的所有子类具有相同的id

c++

12
推荐指数
3
解决办法
4633
查看次数

我可以从外部访问函数内的静态变量吗?

C/C++:我可以从外部访问函数内的静态变量吗?例如:

#include <iostream>
using namespace std;

void f()
{
    static int count = 3;
    cout << count << endl;
}

int main(int argc, char** argv)
{
    f::count = 5;   // apparently this is an invalid syntax.
    f();

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

c c++

10
推荐指数
2
解决办法
5916
查看次数

返回对局部静态变量的引用

刚刚开始学习 C++,遇到了这个示例,其中函数返回对局部静态变量的引用。

int& fun() {
    static int x = 10;
    return x;
}

int main() {
    int &z = fun();
    cout << fun() << " ";
    z = 30;
    cout << fun();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该线有什么int &z = fun();作用?我们是否将一个引用存储在另一个引用中?我是这门语言的新手,我所知道的是引用变量就像别名一样引用变量。谁能解释一下这是如何工作的?

c++

5
推荐指数
1
解决办法
855
查看次数

标签 统计

c++ ×3

c ×2

static ×1