标题:派生类的拷贝构造函数如何定义
取消只看楼主
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
 问题点数:0 回复次数:3 
派生类的拷贝构造函数如何定义
今天做一道c++的题目,是有关于派生类的动态内存分配的,但是在定义类的构造函数的发现没办法写了。
这个是我定义的类和派生类
#ifndef CLASSIC2_H_
#define CLASSIC2_H_
class Cd
{
private:
char *performers;
char *label;
int selections;
double playtime;
public:
Cd(const char *s1,const char *s2,int n,double x);
Cd(const Cd & d);
Cd();
~Cd();
virtual void Report()const;
Cd & operator=(const Cd & d);
};
class Classic :public Cd
{
private:
char *primarywork;
public:
Classic(const char *pw,const char *s1,const char *s2,int n,double x);
Classic();
Classic(const Classic & c);
Classic(const Cd & d);
Classic & operator=(const Classic & c);
void Report()const;
};
#endif
红色是我自己加的几个构造函数,但是我不知道如何定义了,派生类的数据成员char *performers;
char *label;
int selections;
double playtime如何赋值呢,又不能直接调用基类的成员变量。
搜索更多相关主题的帖子: 构造函数 派生类 定义 内存 const 
2007-09-13 17:12
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
得分:0 
没人指导一下吗?
2007-09-13 20:32
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
得分:0 

我的思路是这样的。我希望在派生类中直接实现对象之间的相互赋值。例如A,B都是Classic的对象。可以执行A(B),A=B操作。同时如果A是基类的对象,而B是派生类的对象的话。也可以执行B=A,只不过是派生类多出来的成员变量设为默认值。所以我才加了这些构造函数。但是在派生类的变量
char *label;
int selections;
double playtime
不知道如何赋值。编译的时候老是提示无法读取基类的private变量


不知道我的想法是不是正确。可不可能实现呢?

2007-09-14 17:20
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
得分:0 
以下是引用jbwang在2007-9-14 0:49:14的发言:
想了半天也没有想出办法来。
我觉得这样构造函数不太会出现使用,像Classic(const Classic & c);
既然已经知道了Classic c,那么我们只要直接赋值就好了,何必用构造函数呢?
Classic b=c;

至于第二个构造函数就好象要把一个基类赋给一个子类,这是没法做到的。(只有子类能赋给基类Cd a=b;)

我觉得讨论这个问题的意义不大,大家各抒己见吧!

但是在有动态内存分配的时候,是要定义拷贝构造函数来实现A(B)的操作的吧

2007-09-14 17:23



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




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

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