在C ++中,如何声明本地类变量?我是C ++的新手,但有一些python经验。我想知道C ++类是否有办法识别它们的局部变量,例如,在python中你的类'局部变量用self标记。所以他们会像:
self.variable_name
C ++是否对局部变量有类似的东西,或者它有什么完全不同的东西?在伪代码中,我认为班级'变量看起来像这样:
class Code:
public:
<some code>
private:
int self.variable
double self.other_variable
<more code>
然而,我可能完全错了。提前谢谢。
答案 0 :(得分:0)
那非常接近!然而,在类中,人们会简单地使用自己的名称来提及类变量,因此variable
而不是class.variable
。
(另请注意,您的函数需要在它们后面加一个分号,按照惯例,这些函数往往在类本身或单独的文件中定义)
class Circle {
public:
Circle(double var, bool otherVar); //constructor
double getVariable(); //getter
void setVariable(double var); //setter
// you can put more functions here
private:
double variable;
bool otherVariable;
//you can put more functions here
};
Circle::Circle(double var, bool otherVar){
variable = var;
otherVariable = otherVar;
}
Circle::getVariable(){
return variable;
}
Circle::setVariable(double var){
variable = var
}
为了更好地了解这个主题,请查看此similar question/answer.,或者如评论中所述,考虑阅读有关C ++的教科书...
编辑:我基于“识别”变量的问题标题编写了这个答案,指出问题很可能是代码无法编译,因为class.variable
不是C ++中引用的内容。但是,我不确定这个问题是否涉及初始化,声明等等。
答案 1 :(得分:-1)
当您阅读Effective C ++(由Scott Meyers编写)时,成员变量在ctor初始化时是init。在ctor之后,所有赋值都是赋值,而不是init。你可以像这样写ctor。
Circle(double value, bool isTrueFalse, <More Variables>) : class.variable(value), class.othervariable(isTrueFalse), ..<More Variables> //this is init.
{
class.variable = value; //this is assignment. not init.
}
C ++ init命令是上下颠倒的,而不是ctor初始化顺序。
private:
double class.variable; //First init;
bool class.variables;//Second init;
如果你想要局部变量init,你可以将值传递给ctor。
在C ++中。赋值和init是不同的。类本地成员仅在ctor Initializer处初始化。 init比赋值更快。因为init只是一个调用ctor,并且结束。但是赋值是调用ctor,还有赋值运算符。你应该使用ctor初始化器来实现性能。