草庐IT

VARIABLES

全部标签

c# - C++ 和 C# 中的静态变量有什么区别?

静态变量在C#中的功能是否与在C++中的功能相同或相似?编辑:使用C++,您可以在许多不同的上下文中使用静态变量-例如:1)全局变量,2)局部函数变量,3)类成员-C#中的类似用法是否与C++中的类似用法相似? 最佳答案 静态在C++中有多种含义。C#中的静态变量基本上只有一个含义:作用域为类型的变量。在C#中,类型上的static用于表示类型范围的变量。方法上的静态是一种类型范围的方法。Static也可以用在类上,表示整个类仅由静态方法、属性和字段组成。函数作用域内的静态变量或非类作用域的静态值没有等价物。编辑:作为对您编辑的回应

c++ - 在 C++ 中创建全局 "constant"的正确方法

通常,我定义一个真正的全局常量(比如pi)的方法是将一个外部常量放在一个头文件中,然后在一个.cpp文件中定义该常量:常量.h:externconstpi;常量.cpp:#include"constants.h"#includeconstpi=std::acos(-1.0);这对于真正的常量(如圆周率)非常有用。但是,我正在寻找定义“常量”的最佳实践,因为它在程序运行之间保持不变,但可能会发生变化,具体取决于输入文件。这方面的一个例子是引力常数,它取决于所使用的单位。g在输入文件中定义,我希望它是任何对象都可以使用的全局值。我一直听说拥有非常量全局变量是不好的做法,所以目前我将g存储在

c++ - 在 C++ 中将一个字符串值赋给一个整型变量会发生什么?

我刚开始学习C++(请原谅我的菜鸟问题)。这是我作为练习编写的一些代码:#includeintmain(){usingnamespacestd;intfoo;cin>>foo;intbar;cin>>bar;cout现在,当两个输入都是数字时,这段代码工作得很好。但是当我为第一个输入输入一个字符串时(只是为了看看会发生什么)程序不会要求我输入第二个输入并且cout结果是fooplusbaris0。我想知道的是,当我将一个字符串分配给一个整型变量时,为什么程序会跳过我的第二个cin。感谢您的帮助。 最佳答案 一个流有一个内部状态。如果

c++ - 如何将Lua变量直接映射到C++变量?

我正在使用C++开发一个游戏引擎,使用Lua来定义NPC。我可以这样定义一个原型(prototype)NPC:orc={name="GenericOrc",health=100}functionorc:onIdle()print("Orcidles...")end然后使用entitySpawn(orc)生成一个“Orc”实例。这是一个C++函数,它从给定的表中读取健康和名称等值,用给定的值在C++中创建一个实体对象,此外还为特定的NPC创建一个Lua表。现在,我想直接连接Lua中的orc.health变量和C++中对应的Entity对象的mHealth成员变量,所以我可以在Lua中分配

C++ - 临时变量及其生命周期

这个问题可以被认为是以下问题的后续问题:C++temporaryvariablelifetime.Qt容器支持stream-like初始化语法。现在,当我编写以下代码时,我的QVector在赋值后立即销毁,引用变为悬空。constQVector&v=QVector()对应operator实现方式如下:inlineQVector&operator据我所知,10.4.10TemporaryObjects声明临时对象的生命周期被延长以匹配相应的生命周期const引用它。但是,在这种情况下,临时对象QVector()较早销毁。我想这可能是由于最后一个操作返回了QVector&而发生的。并且不应

c++ - 如何修复 "invalid operands to binary expression"错误?

我没有使用C++的经验,一直卡在编译器生成二进制表达式的无效操作数classAnimal{public:intweight;};intmain(){Animalx,y;x.weight=33;y.weight=3;if(x!=y){//dosomething}}我想使用x并与y进行比较,而不修改主代码中的代码,即(x.weight!=y.weight)。我应该如何从外部类或定义中解决这个问题? 最佳答案 或者,您可以将运算符重载添加为非成员:#includeusingnamespacestd;classAnimal{public:i

c++ - 这个局部变量是否隐藏/隐藏了另一个常态或 Visual Studio 中的错误?

我已经大大简化了这个问题,因为在更简单的情况下会出现同样的问题:#includeintheight;intmain(){std::cout似乎是调试器显示错误变量值的问题。变量值是正确的,因为打印变量显示正确的全局高度值0。 最佳答案 你是对的,全局变量height在声明自动变量height之前,不被隐藏在main()的最后声明中.std::cout将使用全局变量height.是的,这让调试器感到困惑。它正在显示localheight的值变量,在调试版本中初始化为0xCCCCCCCC,或-858993460以十进制显示。编译器做了正

c++ - C++ 中的引用变量

假设我有以下GPoint代码片段,它有一个复制构造函数、赋值运算符和析构函数。GCircle也是如此,它有一个名为GetCentre()的函数,它返回Gpoint对象的拷贝(Centre).在main或ButtonClick()中,调用GPoint&Centre=circle.GetCentre()是否安全/有效?通过这样做(如果有效),我们将节省调用赋值运算符的时间!classGPoint{public:GPoint();virtual~GPoint();GPoint(doublep_dX,doublep_dY);GPoint(constGPoint&Source);GPoint&o

c++ - POSIX C 线程。 pthread_cond_t 示例。没有按预期工作

我写了一个程序,但它没有像我预期的那样工作。我有两个线程:thread触发func和anotherThread触发anotherFunc。我想做的是当cont在func中达到值10时,使用触发anotherThreadpthread_cond_wait和pthread_cond_signal。奇怪的是,如果我取消注释sleep(1)行,一切正常。我是线程的新手,我正在学习教程here如果我在他们的示例中评论sleep行,它也会中断。我的问题是如何在没有任何sleep()调用的情况下完成这项工作?如果在我的代码中func在anotherFunc之后到达pthread_mutex_lock

c++ - 到处使用 std::size_t 是一种好习惯吗?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Whentousestd::size_t?我的代码中有很多常量是无符号数,例如计数器、截止频率、长度等。我开始对所有这些使用std::size_t,而不是int或unsignedint。这样做对吗?我启动它是因为STL容器将它用于它们的大小,它用于字符串位置等。