标题:m_Data(std::iostream & is) { is >> *this; }编译无法通过!求大佬解释下! ...
只看楼主
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
结帖率:63.64%
已结贴  问题点数:20 回复次数:2 
m_Data(std::iostream & is) { is >> *this; }编译无法通过!求大佬解释下!
1.不是很明白整条语句的意思!
2.这构造函数什么时候会被执行?
3.常常会看到std::iostream & is 被作为参数时的作用是什么?假如需要输入直接调用cin 不就可以了吗?为什么要这么麻烦呢?
程序代码:

class m_Data
{
public:
    m_Data(std::iostream & is) { is >> this->m_nMax; }
    std::istream& operator >> (m_Data& per)
    {
        this->m_nMax=per.m_nMax;
    }
private:
    int m_nMax;
};
int main()
{
    m_Data s1(std::istream);//

    system("pause");
    return 0;
}

4.m_Data(std::iostream & is) 既然是从流中读取数据,那么 main中 创建对象时 无法输入数据 这又是为什么?
5.m_Data s1(std::istream); 这样写 编译是过去了!但是毫无意义啊!

求大佬帮忙回答下!谢谢!
搜索更多相关主题的帖子: std iostream this 编译 输入 
2018-09-27 18:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
你这代码从哪里抄来的呢?
你为什么要去理解别人的这段梦游时敲出的代码?

正常的代码这样写
程序代码:
#include <iostream>

class Data
{
public:
    // 我也不知道这个没有public成员的类有什么用
private:
    int value_;

    friend std::istream& operator>>( std::istream& is, Data& data )
    {
        return is >> data.value_;
    }
    friend std::ostream& operator<<( std::ostream& os, const Data& data )
    {
        return os << data.value_;
    }
};

using namespace std;

int main( void )
{
    Data data;
    cin >> data;
    cout << data;
}

“3.常常会看到std::iostream & is 被作为参数时的作用是什么?假如需要输入直接调用cin 不就可以了吗?为什么要这么麻烦呢?”
------ 因为未必是从cin输入。明明写出的函数适用于一切的输入流,为什么要限定其只能用于cin?

5.m_Data s1(std::istream); 这样写 编译是过去了!但是毫无意义啊!
------ 这是声明了一个函数:函数名s1,返回类型m_Data,参数类型std::istream
2018-09-28 08:53
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
得分:7 
2.这构造函数什么时候会被执行?

在类创建实例的时候就会自动调用构造函数。
其它问题不懂
2018-09-28 19:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490038-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015552 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved