C ++是否有办法识别本地类变量?

时间:2017-05-21 05:12:43

标签: c++ local-variables

在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>

然而,我可能完全错了。提前谢谢。

2 个答案:

答案 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初始化器来实现性能。