| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:这段程序为什么不输出啊?
只看楼主 加入收藏
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
收藏
 问题点数:0 回复次数:9 
这段程序为什么不输出啊?
Windows 7下居然提示

程序代码:
#include <iostream>
#include <cstring>
using namespace std;

class Books
{
    private:
        float Price;
        string Author;
    public:
        Books(float price, string author);
        void ShowInfo();
        Books& operator =(const Books &bookname);
};

Books& Books::operator = (const Books &bookname)
{
    if (&bookname == this)
        return *this;
    else
    {
        Books temp(bookname.Price, bookname.Author);
        return temp;
    }
}

Books::Books(float price, string author)
{
    Price = price;
    Author = author;
}

void Books::ShowInfo()
{
    cout << "Book Price" << '\t' << Price << endl;
    cout << "Book Author" << '\t' << Author << endl;
}

int main()
{
    Books APEU(67, "Bob");
    APEU.ShowInfo();
    return 0;
}

搜索更多相关主题的帖子: Windows color price 
2011-11-04 20:45
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
void Books::ShowInfo()
{
    cout << "Book Price" << '\t' << Price << endl;
    cout << "Book Author" << '\t' << Author.c_str() << endl;
}

注意红色的地方

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-11-04 20:51
Cplus菜鸟
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-10-29
收藏
得分:0 
你把#include <cstring>改成#include <string>就没有问题了
2011-11-04 21:05
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
回复 2楼 yuccn
谢谢。可是还是不能通过

o(∩∩)Linux & Python 群:187367181
2011-11-04 21:06
Cplus菜鸟
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-10-29
收藏
得分:0 
Books& Books::operator = (const Books &bookname)
{
    if (&bookname == this)
        return *this;
    else
    {
        Books temp(bookname.Price, bookname.Author);
        return temp;
    }
}你这段代码,有问题,容易造成运行错误,你返回的一个临时对象的引用!函数返回的时候,对象都释放了,你还返回一个对象的引用
2011-11-04 21:07
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
我该了一下,可还是不对

程序代码:
#include <iostream>
#include <string>
using namespace std;

class Books
{
    private:
        float Price;
        string Author;
    public:
        Books(float price, string author);
        void ShowInfo();
        Books operator =(const Books &bookname);
};

Books Books::operator = (const Books &bookname)
{
    if (&bookname == this)
        return *this;
    else
        return Books(bookname.Price, bookname.Author); //这里
}

Books::Books(float price, string author)
{
    Price = price;
    Author = author;
}

void Books::ShowInfo()
{
    cout << "Book Price" << '\t' << Price << endl;
    cout << "Book Author" << '\t' << Author << endl;
}

int main()
{
    Books APEU(67, "Bob");
    APEU.ShowInfo();
    return 0;
}


o(∩∩)Linux & Python 群:187367181
2011-11-04 21:28
麓橥
Rank: 1
来 自:广东省湛江市雷州市
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-4
收藏
得分:0 
2楼的没问题,试过了
2011-11-05 21:16
何凡
Rank: 2
等 级:论坛游民
帖 子:4
专家分:23
注 册:2011-11-2
收藏
得分:0 


六楼的代码我有DEV-C++试了下,管用。只是在return 0;前加了个system("pause");
输出的是:
Book price   67
Book Author  Bob

2011-11-06 13:49
deng0981
Rank: 1
等 级:新手上路
帖 子:11
专家分:6
注 册:2011-11-4
收藏
得分:0 
试了。 把cstring改为string输出正常。有可能是你编译环境的问题!
2011-11-06 15:28
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:0 
程序应该没有问题,和你的IDE有关吧?
提一个建议,建议构造函数这样写,
  Books(float price, string author):Price(price), Author(author){};

2011-11-06 23:01
快速回复:这段程序为什么不输出啊?
数据加载中...
 
   



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

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