C ++函数参数和类

时间:2013-09-01 06:32:46

标签: c++ function class

我只是想知道你是否可以向我解释参数的功能是如何工作的。 我一直在关注教程等,但他们似乎没有解释代码如何工作以获得输出。下面是一个例子:

#include <iostream>

using std::endl;
using std::cout;
using std::cin;
using std::string;



class stan
{
public:
    void setName(string x)
    {
        name = x;
    }
    string getName()
    {
        return name;
    }

private:
string name;
};

int main()
{
stan con;
con.setName("Bruce Almighty");
cout << con.getName() << endl;
}

我不知道如何从公共字符串名称到私有字符串名称。我所说的一定听起来真的很混乱,但我不知道怎么说,我只想了解这段代码是如何工作的。 感谢任何有帮助的人,这意味着很多

5 个答案:

答案 0 :(得分:1)

  1. 程序从函数main开始。
  2. 它声明了con类型的本地变量stan
  3. 使用参数setName调用对象con的方法"Bruce Almighty"
  4. 标题void setName(string x)的方法开始执行。参数x获取相应参数("Bruce Almighty")的值。
  5. 此对象的私有成员name设置为参数x"Bruce Almighty")的值。
  6. 方法setName返回到调用它的位置。
  7. cout表示控制台输出。
  8. 要应用运算符<<,需要对con.getName()进行评估。对象getName的方法con被调用,没有参数。
  9. 标题string getName()的方法开始执行。没有参数。
  10. 返回此对象的私有成员name的值("Bruce Almighty")。
  11. 方法getName返回使用值"Bruce Almighty"调用的点。
  12. cout使用此值并在控制台中生成它。
  13. 相同的cout对象在控制台中生成endl值。 endl在控制台中创建一个新行。

答案 1 :(得分:0)

http://www.cplusplus.com/doc/tutorial/classes/

  
      
  • 类的私有成员只能从其他成员访问   同一个班级的成员或他们的朋友。
  •   
  • 受保护的成员可以从同一个班级的成员和他们的朋友那里访问,   但也来自派生类的成员。
  •   
  • 最后,可以从对象可见的任何地方访问公共成员。
  •   

基本上,私有成员只能是类功能才能访问的。所以“字符串名称”只能从类函数中读/写。可以从类外部调用公共函数/变量,您给出的示例是“setName”和“getName”

因此,为了编写或读取私有字符串,您的代码将使用您创建的公共函数。

答案 2 :(得分:0)

基本步骤:

con.setName("Bruce Almighty");

调用setname函数并将字符串"Bruce Almighty"传递给它。

void setName(string x)

收到您发送的字符串"Bruce Almighty",并将其称为x

name = x;

x的值"Bruce Almighty"分配给变量name

con.getName()

请求getName函数中的值。

string getName()

getName函数声明为返回string的函数。

return name;

获取变量name中保存的字符串,setName设置为"Bruce Almighty"并将其返回给调用者,调用者将其发送到cout进行输出。

答案 3 :(得分:0)

setName是帮助你传递字符串的人,&#34; Bruce Almighty&#34;到斯坦村的私人名称领域。

你说,&#34;嘿setName,我要通过&#34; Bruce Almighty&#34;参数作为参数 x 。我不在乎你是怎么做的,只是把它交给私人 名称 字段!

setName说,&#34;好吧,我明白了,你的意思是我的 x 参数是Bruce Almighty对吗?&#34;

你说,&#34;是的!&#34;

setName说。 &#34;好的,我完成了。你不需要知道我是怎么做到的。这就是我们所说的抽象。您只是订购,但您不需要了解我是如何做到的。但是,如果你想知道,我是通过使用赋值运算符 = 来实现的。我在左侧放置了私人名称字段,在右侧放置了我的参数 x 。由于您将Bruce Almighty提供给我的参数 x ,因此会将其分配给私人 名称 字段。轰&#34!;

答案 4 :(得分:0)

在类定义中,您只需使用其名称即可访问数据成员。例如。在setName体内,所有成员的名称都在范围内,因此也是私有数据成员name。用这种方式声明:

    name = x;

xsetName的参数)的值赋给name,这是私有数据成员。

但是,在命名成员时必须小心,因为如果局部变量的名称与成员相同,则可能会出现名称冲突。您可以使用this->为您的成员添加前缀,例如:

    this->name = x;

或使用命名约定,例如为任何数据成员的名称赋予前缀:

    m_name = x;    // "m_" stands for "member"
...
private:
    string m_name;

this是一个C ++关键字,表示指向您调用方法的对象(即成员函数)的指针。它可用于在类定义中引用该对象。因此this->name表示“指针name指向的对象内的成员this