【问题标题】:What are is meaning of the eight line with respect to java?八行相对于java的含义是什么?
【发布时间】: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 的长度。
  • 是构造函数初始化

标签: c++ friend


【解决方案1】:

这意味着你初始化Box具有参数length0的构造函数

一般语法

Constructor_name : Parameter_name(value)
{

}

【讨论】:

    【解决方案2】:

    定义了一个构造函数Box,它将length初始化为0

    【讨论】:

      【解决方案3】:

      您所指的第 8 行是一个非默认构造函数。每次创建 Box 类的对象时都会调用它。 “length(0)”部分意味着它将 Box 对象的长度属性设置为 0。 如果我是你,我会阅读默认构造函数和非默认构造函数。希望对您有所帮助。

      【讨论】:

        【解决方案4】:

        这将是 box 的默认构造函数,在运行时将长度成员变量初始化为 0。如果您尝试将其中的 0 更改为例如 12,则所有框的默认长度都为 12。查找C++ Constructor initialization list 以获取更多信息。

        【讨论】:

          猜你喜欢
          • 2015-12-15
          • 1970-01-01
          • 2012-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-18
          • 1970-01-01
          • 2016-01-31
          相关资源
          最近更新 更多