【问题标题】:Does C++ have a way of identifiying local class variables?C++ 有识别局部类变量的方法吗?
【发布时间】:2017-10-20 23:09:17
【问题描述】:

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

但是,我可能完全错了。提前致谢。

【问题讨论】:

  • 我投票决定将此问题作为离题结束,因为它非常不清楚。我建议你读一本基础教科书。您的问题实际上是非常模棱两可的,因为您使用“初始化”这个词来表示与 C++ 中实际被认为是初始化的东西非常不同的东西。您的“代码”也无助于澄清您的意思。花一些时间学习基础知识。一旦您了解了一些基础知识,您就可以提出一个不那么令人困惑的问题。
  • 我已经编辑了这个问题,希望能让问题更清楚。
  • 欢迎来到 Stack Overflow!听起来你可以使用good C++ book

标签: c++ local-variables


【解决方案1】:

当您阅读 Effective C++(由 Scott Meyers 编写)时,成员变量在 ctor 初始化程序时被初始化。在 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++ 初始化顺序是上下颠倒的,而不是 ctor 初始化顺序。

 private:
       double class.variable; //First init;
       bool class.variables;//Second init; 

如果你想初始化局部变量,你将值传递给ctor。

在 C++ 中。赋值和初始化是不同的。类本地成员仅在 ctor Initializer 处初始化。 init 比赋值快。因为init只是一个调用ctor,然后结束。但赋值是调用ctor,赋值运算符又是一个。您应该使用 ctor Initializer 来执行。

【讨论】:

    【解决方案2】:

    这很接近!然而,在类中,人们会简单地使用它们自己的名称来提及类变量,因此使用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++ 中的引用方式。但是,我不确定问题是否涉及初始化、声明等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 2015-10-23
      • 2010-10-27
      • 2015-06-08
      相关资源
      最近更新 更多