草庐IT

VARIABLES

全部标签

c++ - 在 C++ 中声明和初始化变量的最佳实践

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion因为我刚开始使用C++,所以我努力保持我的代码干净、可读和正确。我有一个问题,即声明和初始化变量时的最佳做法是什么。在BjarneStroustrup的《C++编程原则和实践》中,他建议尽可能初始化变量。我明白了。没有提到的是像这样在单行语句中声明变量的正确性:intvalue1=0,value2=0,value3=0;反对像这样使用三种不同的语句:intvalue1=0;intvalue

c++ - 使用相同的参数名称和成员名称是否有效

这是否有效C++,假设我想将参数变量复制到成员变量:structStruct{Struct(constT&value):value(value){}Tvalue;};(更新:它在VisualStudio中工作,但仍然可能依赖于编译器)(预期问题:为什么需要这个?答案:宏制作目的) 最佳答案 这确实是有效的代码,就像其他答案一样,我会警告您应该非常小心地使用它,因为它可能会造成混淆,并可能导致难以维护代码。那么为什么这样做有效呢?如果我们考虑您的构造函数:Struct(constT&value):value(value){}^^121

c++ - 类中的静态成员是如何分配的?

如果我有一个类似的类classMyClass{public:intmyMember1;intmyMember2;intmyMember3;};每次我实例化一个MyClass的对象时,分配三个连续的int空间,当我有类似的东西时怎么办classMyClass{public:staticintmyMember1;intmyMember2;intmyMember3;};这次内存是怎么分配的?我问是因为我不完全确定当我声明同一个类的多个实例时内存将如何分配,是否有指向静态成员的指针? 最佳答案 正如其他人已经指出的,您必须在类定义之外显式地

c++ - 变长数组 : How to create a buffer with variable size in C++

我目前正在编写一个移动平均线类。目标是在创建Running_Average类的新对象时能够将缓冲区大小指定为构造函数的一部分。#include#include"Complex.h"#include#include#include#includeusingnamespacestd;classRunning_Average{public:doublesum=0;doubleaverage=0;inti;doubleAverage(void);//MemberfunctionsdeclarationvoidAddSample(double);Running_Average(int);};Ru

c++ - 在 C++ 中使用字符串

我正在使用C++中的字符串。我最近在输入字符串时遇到了一个问题。我正在使用cin>>string;将我的字符串作为用户输入。当用户在字符串中输入一个空格时,下一个输入会自动填充剩余的字母,或者有时留空。由于下一个输入字符串通常是整数,这将导致令人不快的错误。有什么好的解决方法?编辑:这是当前代码:cout 最佳答案 您可能希望将所有输​​入都输入到字符串中,直到用户按下回车键。在那种情况下,可以说您真正想要的是阅读“一行”文本。为此,您需要使用std::getline,如下所示:std::getline(cin,enemyName)

c++ - 地址分配给整型变量

你怎么能这样给整型变量赋地址,编译器不会报错。我总是认为你只能将整数值赋给整数变量inta=0x28ff1c你可以对一个char变量做同样的事情,编译器不会报错charb=0x28ff1c它将在控制台屏幕上输出charb的垃圾值和inta的随机值cout谁能给我解释一下为什么charb和inta的输出不同。有人可以向我解释为什么char变量和整数变量可以分配地址 最佳答案 0x28ff1c本身不是地址-它只是一个十六进制数。以下是等价的:inta=2686748;//decimalnumberinta=0x28ff1c;//hexa

C++ for循环变量的生命周期很奇怪

for(inti=0;i代码的输出是123456789。我想知道为什么在执行变量声明时for循环中的变量n没有被初始化。 最佳答案 您永远不会将n初始化为特定值。当您调用intn时,C++默认不会执行此操作。相反,它只是保留一个整数大小的内存块。因此,当您调用n++时,程序只是获取该内存中恰好存在的任何值并递增它。由于您是快速连续地执行此操作而不是在其间创建新变量,因此它恰好一遍又一遍地获取相同的内存。正如@NicolasBuquet指出的那样,编译器优化也可能与选择相同内存块的一致性有关。如果您要为n分配一个值(即intn=1;)

c++ - 未初始化的 boolean 变量不一致

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhydoIseestrangevalueswhenIprintuninitializedvariables?Funwithuninitializedvariablesandcompiler(GCC)我想知道我在解决代码问题时遇到的一个神秘问题。生产中的代码有一个未初始化的boolean变量,库正在检查这个boolean值。在LIVE站点中,此变量始终表现为TRUE开发环境中的相同代码始终表现为FALSE。我知道,由于LIVE和DEV之间的环境差异,未初始化的bool变量可能具有未定义的值。但这是我的问题。如

c++ - 函数头中的 C/C++ 数组变量

我们可以在C/C++函数头中将数组作为变量传递,如intfunc(intarr[]){...}我想知道:是否有可能在传递到函数头的变量中的[]中包含某些内容,或者它是否始终为空? 最佳答案 对于任何(非引用)类型T,函数签名Rfoo(Tt[])和Rfoo(Tt[123])(或任何其他数字)等同于Rfoo(T*t),通过传递第一个元素的地址来传递数组。请注意,T本身可能是数组类型,例如T=U[10]。 关于c++-函数头中的C/C++数组变量,我们在StackOverflow上找到一个类似

c++ - 我应该使用静态数据成员吗? (C++)

让我们考虑一个C++类。在执行开始时,我想从XML文件中读取一组值并将它们分配给此类的7个数据成员。这些值在整个执行过程中不会改变,它们必须由相关类的所有对象/实例共享。静态数据成员是实现这种行为的最优雅的方式吗?(当然我不考虑全局变量) 最佳答案 正如其他人所提到的,在这种情况下使用静态成员似乎是合适的。请记住,它并非万无一失。全局数据的一些问题适用于静态成员:您无法控制静态成员的初始化顺序,因此您需要确保没有全局变量或其他静态变量引用这些对象。参见thisC++FAQQuestion了解更多详细信息以及避免此问题的一些提示。如果