我只是想知道你是否可以向我解释参数的功能是如何工作的。 我一直在关注教程等,但他们似乎没有解释代码如何工作以获得输出。下面是一个例子:
#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;
}
我不知道如何从公共字符串名称到私有字符串名称。我所说的一定听起来真的很混乱,但我不知道怎么说,我只想了解这段代码是如何工作的。 感谢任何有帮助的人,这意味着很多
答案 0 :(得分:1)
main
开始。con
类型的本地变量stan
。setName
调用对象con
的方法"Bruce Almighty"
。void setName(string x)
的方法开始执行。参数x
获取相应参数("Bruce Almighty"
)的值。name
设置为参数x
("Bruce Almighty"
)的值。setName
返回到调用它的位置。cout
表示控制台输出。<<
,需要对con.getName()
进行评估。对象getName
的方法con
被调用,没有参数。string getName()
的方法开始执行。没有参数。name
的值("Bruce Almighty"
)。getName
返回使用值"Bruce Almighty"
调用的点。cout
使用此值并在控制台中生成它。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;
将x
(setName
的参数)的值赋给name
,这是私有数据成员。
但是,在命名成员时必须小心,因为如果局部变量的名称与成员相同,则可能会出现名称冲突。您可以使用this->
为您的成员添加前缀,例如:
this->name = x;
或使用命名约定,例如为任何数据成员的名称赋予前缀:
m_name = x; // "m_" stands for "member"
...
private:
string m_name;
this
是一个C ++关键字,表示指向您调用方法的对象(即成员函数)的指针。它可用于在类定义中引用该对象。因此this->name
表示“指针name
指向的对象内的成员this
”