【发布时间】:2018-02-23 00:30:17
【问题描述】:
我正在学习C++,目前我学习了Java(那里没有友元函数的概念)。但这里目前在朋友功能部分。 顺便说一句,我知道 Friend 函数允许访问该类的私有和受保护数据..
我知道这个“::”范围限定符。
我知道这个 ”:?”条件运算符
框():长度(0){}//
这段代码让我很困惑。
它是否与我们在 java 或其他东西中使用的块相同。
class Box
{
private:
int length;
public:
Box(): length(0) { } // ****What is this ?? ******
friend int printLength(Box); //friend function
};
int printLength(Box b)
{
b.length += 10;
return b.length;
}
int main()
{
Box b;
cout<<"Length of box: "<< printLength(b)<<endl;
return 0;
}
【问题讨论】:
-
其实是第8行。无论如何,它是
Box的构造函数的内联定义,它不接受任何参数,有一个初始化器列表,将成员length初始化为值0,并且在构造函数主体中不做任何其他事情 ({}之间)。如果您费心阅读任何有关 C++ 课程的基本介绍性材料,您就不需要问这个问题了。 -
另外,
printLength(Box)方法有一个副作用,就是在 b 的长度上加 10,它根本不打印长度。它更像是一个吸气剂,也增加了 Box 的长度。 -
是构造函数初始化