C++ C++;函数参数和类

C++ C++;函数参数和类,c++,function,class,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; } str

我只是想知道你能不能给我解释一下带参数的函数是如何工作的。 我一直在关注教程等,但它们似乎没有解释代码是如何获得输出的。举个例子:

#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;
}
#包括
使用std::endl;
使用std::cout;
使用std::cin;
使用std::string;
斯坦班
{
公众:
void setName(字符串x)
{
name=x;
}
字符串getName()
{
返回名称;
}
私人:
字符串名;
};
int main()
{
斯坦康;
con.setName(“全能的布鲁斯”);
cout

  • 类的私有成员只能从其他类中访问 同班同学或他们的朋友
  • 受保护的成员可以从同一级别的成员及其朋友处访问, 但也来自其派生类的成员
  • 最后,可以从对象可见的任何位置访问公共成员
基本上,私有成员是只有类函数才能访问的对象。因此“字符串名”只能从类函数读/写。公共函数/变量可以从类外部调用,您给出的示例是“setName”和“getName”

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

  • 程序在函数
    main
    处启动
  • 它声明了一个
    stan
    类型的局部变量
    con
  • 对象
    con
    的方法
    setName
    通过参数
    “Bruce全能者”
    调用
  • 标题为
    void setName(string x)
    的方法开始执行。参数
    x
    获取相应参数的值(
    “Bruce万能的”
  • 此对象的私有成员
    name
    设置为参数
    x
    “Bruce全能者”
    )的值
  • 方法
    setName
    返回到调用它的点
  • cout
    表示控制台输出
  • 要应用操作员
    基本步骤:

    con.setName("Bruce Almighty");
    
    调用
    setname
    函数并将字符串
    “Bruce万能的”
    传递给它

    void setName(string x)
    
    接收您发送的字符串
    “Bruce全能者”
    ,并调用它
    x

    name = x;
    
    x
    的值(即
    “Bruce全能者”
    )指定给变量
    名称

    con.getName()
    
    getName
    函数中请求一个值

    string getName()
    
    getName
    函数声明为返回
    字符串的函数

    return name;
    

    获取变量
    name
    中的字符串,该变量
    setName
    设置为
    “Bruce万能的”
    ,并将其返回给调用者,调用者将其发送到
    cout
    进行输出。

    setName是帮助您将字符串“Bruce万能的”传递到stan村的私有名称字段的人

    您会说,“嘿,setName,我将通过“Bruce万能”参数作为您的参数x。我不管您如何操作,只需将其传递到私有name字段即可

    setName说,“好的,我知道了,你是说我的x参数是Bruce万能的对吗?”

    你说,“是的,对!”


    setName说好的,我完成了。你不需要知道我是如何做到的。这就是我们所说的抽象。你只需简单地排序,但你不需要了解我是如何做到的。但是,为了防止你想知道,我使用赋值操作符=来做到这一点。我将私有名称字段放在左侧,并将参数x放在装备上ht端。因为您为我的参数x提供了Bruce万能,所以它被分配到私有名称字段。轰!“

    在类定义中,您可以仅使用数据成员的名称访问数据成员。例如,在
    setName
    主体中,所有成员的名称都在范围内,因此私有数据成员
    name
    也在范围内。这样,语句:

        name = x;
    
    x
    的值(
    setName
    的参数)指定给作为私有数据成员的
    name

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

        this->name = x;
    
    或者使用命名约定,例如为任何数据成员的名称提供前缀:

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

    <>代码>此是一个表示您调用方法(即成员函数)的对象的指针的C++关键字。它可以用来引用类定义中的对象。因此,< > > >名称<代码>意味着“指针在代码指针>对象>对象>代码>中的成员称为代码>名称< /代码>。
    SetName
    正在将对象
    con
    的字符串
    name
    分配给Buruce万能,并且
    getName
    正在返回字符串变量
    name
    中存在的值,您使用的是哪种开发环境?您应该能够使用调试器通过li逐步完成代码行ne,并在完成每个步骤时检查变量的值。这对学习如何工作非常有帮助。您发布的代码是否编译过?您对类
    std::string
    using std::string
    )有一个使用声明,但您没有包含相关的标题
    @GregHewgill我正在使用代码块,我该如何做到这一点?@LorenzoDonati是的,它可以编译