关于构造函数

[复制链接]
 楼主| baidudz 发表于 2013-7-28 18:38 | 显示全部楼层 |阅读模式
都说构造函数不返回值。但是下面这个程序是怎么回事?
#include <iostream>
#include <stdlib.h>

using namespace std;

class Candy
{
public:
    Candy() {};
    Candy( char* color ) { m_color = color; }
    char* candy_color() const { return m_color; }
    Candy& candy_color( char* color ) { m_color = color; return *this; }

private:
    char* m_color;
};

class Child
{
public:
    Child( char* name ) { m_name = name; }
    void eat( Candy sth ) const;

private:
    char* m_name;
};

void Child::eat( Candy sth ) const
{
    cout <<
        m_name <<
        " eat off a " <<
        sth.candy_color() <<
        " candy." << endl;
}

int main ()
{
    Child ch0( "Stan" );
    Candy ca0 = Candy( "red" );
    Candy ca1;
    Candy ca2 = Candy( "white" ).candy_color( "green" );
     
    ca1 = Candy( "yellow" );

    ch0.eat( ca0 );
    ch0.eat( ca1 );
    ch0.eat( ca2 );
    ch0.eat( Candy( "blue" ) );

    cout << Candy( "black" ).candy_color() << endl;

    system( "pause" );
    return 0;
}
pkat 发表于 2013-7-28 18:53 | 显示全部楼层
这是拷贝构造函数和赋值构造函数在起作用
gxgclg 发表于 2013-7-28 19:06 | 显示全部楼层
拷贝构造函数弄明白就清楚了,看看C++基础
火箭球迷 发表于 2013-7-28 19:16 | 显示全部楼层
你自己可以去试验一下啊,自己写代码测测
yybj 发表于 2013-7-29 15:52 | 显示全部楼层
LZ需要弄清楚拷贝构造函数
xsgy123 发表于 2013-7-30 14:54 | 显示全部楼层
pkat 发表于 2013-7-28 18:53
这是拷贝构造函数和赋值构造函数在起作用

应该就是拷贝构造函数和赋值构造函数的问题
火箭球迷 发表于 2013-7-30 15:02 | 显示全部楼层
LZ需要进一步了解一下构造函数的基本知识
xsgy123 发表于 2013-7-30 19:11 | 显示全部楼层
是有点奇怪
无冕之王 发表于 2013-7-30 19:22 | 显示全部楼层
构造函数一般都是没有返回值的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部