社区
C语言
帖子详情
虚函数和继承问题?
billik
2002-06-27 05:53:31
base 类中含有虚函数
derived 为base的继承类
base a*= new derived [200];
derived::set(base* value)
{
a[0]=*value;
}
上面的语句是否正确?
其中调用的时候外面付给value的值的类型也是derived类型
怎样才能将外面传来的derived值保存下来?
...全文
63
14
打赏
收藏
虚函数和继承问题?
base 类中含有虚函数 derived 为base的继承类 base a*= new derived [200]; derived::set(base* value) { a[0]=*value; } 上面的语句是否正确? 其中调用的时候外面付给value的值的类型也是derived类型 怎样才能将外面传来的derived值保存下来?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
movingboy
2002-06-27
打赏
举报
回复
编译时就应该通不过。
carfieldQ_Q
2002-06-27
打赏
举报
回复
derived d;
derived2 d2;
d2.SetValue(d);
~~~~
最后一句为什么不会成功呢?
//////////
首先:编译通过没有?,这个程序里类之间的相互调用太多,太乱,我实在不知道能否编译通过(我指你的完整的程序)
如果编译通过了,最后一句执行却不成功我想可能有以下原因:
1.
class derived2
{
public:
derived2();
virtual setValue(base&a);
~~~~
};
derived d; 虽然derived是base的子类,可能也存在类型不匹配的问题。
2. 你的参数定义的是应用类型,那调用的时候最好用引用类型或者指针类型
改成 d2.SetValue(&d);试试看
:)
不知道能不能帮到你,也不知道自己说得对不:)
qxp
2002-06-27
打赏
举报
回复
吧你的全部的代码都贴出来吧,上面那个太乱了,
billik
2002-06-27
打赏
举报
回复
快呀,帮帮忙,我急坏了!!!!!
billik
2002-06-27
打赏
举报
回复
哪个的拷贝构造函数?
我已经在derived中写了呀
haidaya
2002-06-27
打赏
举报
回复
你的那个derived2中的values是个什么东西呀,属于undeclared identifier
SetValue()中的i也是,没有申明呀,
这句values[i] = value;什么意思?
我看不懂这段程序
casho
2002-06-27
打赏
举报
回复
要用到拷贝构造函数
billik
2002-06-27
打赏
举报
回复
比较急,请各位高手帮帮忙!
billik
2002-06-27
打赏
举报
回复
哪个的默认构造函数?
billik
2002-06-27
打赏
举报
回复
class base
{
public:
virtual int F1()=0;
};
class derived : public base
{
private:
int a;
public
virtual int F1();
};
class base2
{
public:
base* values;
public:
virtual setValue(base& a)=0;
};
class derived2
{
public:
derived2();
virtual setValue(base&a);
};
derived2::derived2()
{
values = new derived[200];
}
derived2::setValue(base& value)
{
values[i] = value;
}
以上是类的定义
调用:
derived d;
derived2 d2;
d2.SetValue(d);
最后一句为什么不会成功呢?
leasun
2002-06-27
打赏
举报
回复
可以,不过别忘了默认构造函数
andy_lau
2002-06-27
打赏
举报
回复
把整个类的代码贴出来,不明白你的意思。
Wargod2002
2002-06-27
打赏
举报
回复
不明白为什么要这样搞
billik
2002-06-27
打赏
举报
回复
急,帮帮忙!!!!
关于
继承
和
虚函数
的
问题
#include using namespace std; class A { public: A() { a = 1;b = 2;} ~A() {} virtual void fun() { printf("%d %d\n",a,b); cout } int a; int b; }; class B: public A { public: B()
一个关于
继承
和
虚函数
的
问题
首先,看一下这几行简单的代码:class A{int a;public:A(int aa):a(aa){};void funa(){ a++;};};class B:public A{int b;public:B(int aa,int bb):A(aa),b(bb){};virtual void funb()=0;//pure virtual
C++ 多态、虚析构、模板类、常函数、虚
继承
、
虚函数
和纯
虚函数
相关知识和
问题
总结
常函数const成员函数)是在函数声明时,在函数名之后添加const关键字,表明该函数不会修改对象的任何成员变量。常函数的示例private:int value;public:int getValue() const { // 常函数value = v;// 非常函数,可以修改成员变量作用常函数的主要作用是保证对象的状态不会在函数中被改变,尤其是在使用const对象时。如果一个对象是常量(const),则只能调用常函数,无法调用非常函数。
虚
继承
和
虚函数
的相关
问题
浅析
今天主要要理解的是如下代码在内存中是如何储存/运行的:class A { public: virtual void fun1() { cout << "A::fun1" << endl; } int _a; };class B :virtual public A { public: virtual void fun1() {
图解
虚函数
的内存模型和
继承
方式,
虚函数
表指针、
虚函数
表、多
继承
、多重
继承
、菱形
继承
、虚
继承
虚函数
、
虚函数
表指针、
虚函数
表、多级
继承
、多重
继承
、菱形
继承
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章