草庐IT

Variables

全部标签

c++ - 变量引用和名称之间的区别

我正在研究c++的引用,现在我对变量名和引用之间的区别感到很困惑。测试代码如下:classTestClass{private:intnum;public:TestClass(intn):num(n){coutnumnum所以现在我在制作对象时有两个选项,它们是互斥的。在我的理解中,如果我使用options2,编译器会在堆栈内存中创建一个临时对象并将引用值返回给t2。如果这是正确的,我该如何表达或解释选项1?似乎在堆栈内存中创建了同一个对象,计算机为该对象命名为“t2”,但我不清楚这个option1与option2因为变量名和引用有些混淆。此外,交替切换选项,我可以看到在每种情况下对象都

c++ - 序列化 variables_map

如何序列化/反序列化boost::program_options::variables_map?我找不到已经实现的序列化函数,而且我不知道variables_map中的哪些函数可以用来提取和重新组装map。 最佳答案 看起来你发现boost::program_options::variables_map派生自std::map所以你可以使用它的序列化(但稍后会看到警告这个)。如果剩下的唯一问题是序列化它包含的boost::any值,那么您就快完成了。你不能序列化一个任意的boost::any,因为它不知道如何操纵它所拥有的东西。但是,

c++ - 返回堆栈变量?

所以,我一直对C++指针和......无论另一个叫什么都有点模糊。喜欢,Object*pointer=newObject();对比Objectnotpointer();我知道第二个可能涉及指针,但基本上它是一个非指针。(它实际上叫什么?)此外,我相信对于第一个,你必须打电话deletepointer;在某个时候完成它,对吗?另一个你不需要担心。我读到第一个分配在堆上,但第二个分配在堆栈上,并在方法返回时消失。但是,当您从函数返回某些东西(不是原语)时怎么办?ShouldIreturnstd::strings?中写了一个很好的例子:std::stringlinux_settings_pr

c++ - 为什么用short不好

即使在开发人员保证变量永远不会超过一个字节有时甚至两个字节的脚本中也是很常见的;许多人决定对每个可能的变量使用int类型来表示0-1范围内的数字nay。为什么改用char或short会造成如此大的伤害?我想我听到有人说int是“更标准”的类型。这是什么意思。我的问题是数据类型int是否比short(或其他较小的数据类型)有任何明确的优势,由于这些优势,人们过去几乎总是求助于整数? 最佳答案 作为一般规则,C中的大多数算术都是使用int类型执行的(即,普通int,而不是short或长)。这是因为(a)C的定义是这样说的,这与以下事实有

c++ - 使变量成为常数的重要性是什么?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion在什么情况下需要将变量设为常量?如果您希望一个变量始终保持相同的值,难道您不能不更改它吗?

c++ - 类设计: arrays vs multiple variables

我有一些理论问题,但这是我在设计类时有时会遇到的问题,而且我在阅读其他代码时发现它的做法有所不同。以下哪项会更好,为什么:示例1:classColor{public:Color(float,float,float);~Color();friendbooloperator==(Color&lhs,Color&rhs);voidmultiply(Color);//...floatget_r();floatget_g();floatget_b();private:floatcolor_values[3];}示例2:classColor{public://asaboveprivate:floa

c++ - 是否可以将任何类型的函数存储在一个变量中?

我正在尝试制作一个菜单数组,其中每个元素都是一个结构,用于存储文本变量、需要按下以选择该项目的键和在该键按下时调用的函数(类似于“退出”、'Q',退出())。我认为这会让事情变得更有效率,但我找不到一种方法让它适用于各种函数和参数类型(例如,一个项目应该能够调用一个没有参数的void函数,另一个是一个类int函数两个参数等)。有没有好的方法可以做到这一点,还是我最好放弃这个想法?编辑:谢谢大家的建议!提议的解决方案对我的新手来说感觉有点太复杂,但试图理解它们给了我一些想法!我最终让第三个变量包含一个枚举而不是直接函数调用,然后创建了一个switch函数,它根据该值调用其他函数。

c - 局部变量声明放置所需的 Microsoft C/C++ 编译器开关

我正在使用MicrosoftC/C++编译一些C文件,它提示在block内声明局部变量。当然,在block的开头声明它们是可以的。我可以使用什么编译器开关来抑制我遇到的错误?非常感谢,克里斯 最佳答案 在C89及更早版本中,所有block作用域变量声明必须位于任何语句之前。C99改变了这条规则,因此声明和语句可以像在C++中一样混合使用。不幸的是,Microsoft已选择不在VisualStudio中支持C99,并且没有计划支持AFAIK。 关于c-局部变量声明放置所需的Microsof

windows - NASM 程序集 - 这个变量后面的 ", 0"是做什么用的?

就在我按照指南在汇编中使用MessageBoxA函数之前,在创建变量时,他们在变量内容后使用了“,0”。这是做什么用的?代码如下所示:paramTextdb"thisistext",0 最佳答案 它实际上是字节零,很可能是为了创建一个null-terminatedstring. 关于windows-NASM程序集-这个变量后面的",0"是做什么用的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

c++ - 远近不一致

我一直在检查并重构一些代码。我最终改变了一个函数:voidsetPerspective(floatnearP=0.1f,floatfarP=1000.0f);到voidsetPerspective(floatnear=0.1f,floatfar=1000.0f);并开始出现许多奇怪的'missing;'和'missing)'错误。near和far似乎是windef.h中的#defined。很公平;我会避免使用它们。但后来我在另一个头文件中注意到:voidsetPerspective(floatfov,floataspect,floatnear,floatfar);但我没有遇到任何麻烦。