41 个解决方案
#1
这个,还真的不知道……
没那样干过……
请楼主自行用编译器验证一下^_^
没那样干过……
请楼主自行用编译器验证一下^_^
#2
标了
#3
基类必须要,没有听说过基类虚函数可以省略virtual的,
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
#4
纯虚函数是在虚函数的基础上加 = 0;
如果基类的某个函数是虚函数,而派生类又有与基类同名的虚函数的话
应该就可以不用加了吧
以为基类如果是虚函数派生类也是虚函数,有加跟没有加virtual都一个样
如果基类的某个函数是虚函数,而派生类又有与基类同名的虚函数的话
应该就可以不用加了吧
以为基类如果是虚函数派生类也是虚函数,有加跟没有加virtual都一个样
#5
看C++ primer(4th edition)上面502页这样写的(“在函数形参表后面写上=0表示纯虚函数”,没说必须要virtual啊,一直记的是要的,但看到这里疑惑了):
#6
这个函数纯虚函数,为了实现多态。
而由于是纯虚函数,所以是抽象类型的,不可以实例化。
后代继承之后,如果需要该函数,则要实现该函数。
而由于是纯虚函数,所以是抽象类型的,不可以实例化。
后代继承之后,如果需要该函数,则要实现该函数。
#7
为什么不自己试试?写个测试代码5分钟内即可以验证了!
尽信书则不如无书,如果讨论任何问题得基础都是“xx书这么说了”而没有自己得思考和验证,这是非常不健康得学习方式
尽信书则不如无书,如果讨论任何问题得基础都是“xx书这么说了”而没有自己得思考和验证,这是非常不健康得学习方式
#8
手头机子没编译器啊......就是上来问问,给个准信就好...........大家搞得这么麻烦...........
#9
首先声明虚函数肯定要virtual
但基类已经有virtual关键字子类就可以省了
省不省和是否是纯虚函数无关。
但基类已经有virtual关键字子类就可以省了
省不省和是否是纯虚函数无关。
#10
好吧,我手头有编译器
经验证,VC2008下,纯虚函数不能省略virtual,只加=0,会报错
error C2253: “A::f”: 纯说明符或抽象重写说明符只允许在虚函数上使用
经验证,VC2008下,纯虚函数不能省略virtual,只加=0,会报错
class A
{
public:
void f()=0;
};
error C2253: “A::f”: 纯说明符或抽象重写说明符只允许在虚函数上使用
#11
class A
{
virtual void f() = 0;//不能省
};
class B : public A
{
void f() = 0;//能省
};
int main()
{
}
#12
省不省和是否是纯虚函数无关。
#13
基类显示声明了virtual的话,默认派生类都是虚函数
所以基类必须要显示声明,如果你有需求的话
所以基类必须要显示声明,如果你有需求的话
#14
不同的编译器有不同的规则。。。。。。建议加上virtual,即使是子类override了你的虚函数,也建议加上virtual,就是为了明确。。。
#15
bm
#16
.
#17
正解
#18
.......
#19
好东西,收藏了,谢谢楼主
#20
d
#21
拿走。
#22
纯虚有 =0的,带不带virtual 要看编译器了
#23
d
#24
么偶看到不用virtual还是虚函数的用法,关注。
#25
#3
#26
不懂
#27
基类里的虚函数都要加virtual吧, 纯虚函数就是在虚函数后面加=0.
#28
要。
#29
楼主所说有情况我不知道对不对,不过我知道我所引用的这个所说的一定对。
#30
[Quote=引用 29 楼 hellodan 的回复:]
引用 3 楼 arong1234 的回复:
基类必须要,没有听说过基类虚函数可以省略virtual的,
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
楼主所说有情况我不知道对不对,不过我知道我所引用的这个所说的一定对。
[/Quote
引用 3 楼 arong1234 的回复:
基类必须要,没有听说过基类虚函数可以省略virtual的,
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
楼主所说有情况我不知道对不对,不过我知道我所引用的这个所说的一定对。
[/Quote
#31
个人建议还是加上为好,厚积薄发嘛,
#32
派生类书写上可以省去,如果其上层父类已经声明该函数为virtual的话.
实际生成的代码没有区别
实际生成的代码没有区别
#33
11楼正解,
gcc 4.5.0通过。
gcc 4.5.0通过。
#34
人家也没说不加可以啊。
#35
C++ primer(第四版)好难读懂啊 例子一点都不好
#36
基类必须要用virtual 关键字,但是派生类里可以不用!
class Base
{
virtual void A();
}
class Derived : public Base
{
(virtual) void A();//这里的virtual 可要可不要
}
class Base
{
virtual void A();
}
class Derived : public Base
{
(virtual) void A();//这里的virtual 可要可不要
}
#37
mark 学习中
#38
标上吧,明显,好理解。
#39
派生类可以省略
#40
#41
学习了 帮顶
#1
这个,还真的不知道……
没那样干过……
请楼主自行用编译器验证一下^_^
没那样干过……
请楼主自行用编译器验证一下^_^
#2
标了
#3
基类必须要,没有听说过基类虚函数可以省略virtual的,
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
#4
纯虚函数是在虚函数的基础上加 = 0;
如果基类的某个函数是虚函数,而派生类又有与基类同名的虚函数的话
应该就可以不用加了吧
以为基类如果是虚函数派生类也是虚函数,有加跟没有加virtual都一个样
如果基类的某个函数是虚函数,而派生类又有与基类同名的虚函数的话
应该就可以不用加了吧
以为基类如果是虚函数派生类也是虚函数,有加跟没有加virtual都一个样
#5
看C++ primer(4th edition)上面502页这样写的(“在函数形参表后面写上=0表示纯虚函数”,没说必须要virtual啊,一直记的是要的,但看到这里疑惑了):
#6
这个函数纯虚函数,为了实现多态。
而由于是纯虚函数,所以是抽象类型的,不可以实例化。
后代继承之后,如果需要该函数,则要实现该函数。
而由于是纯虚函数,所以是抽象类型的,不可以实例化。
后代继承之后,如果需要该函数,则要实现该函数。
#7
为什么不自己试试?写个测试代码5分钟内即可以验证了!
尽信书则不如无书,如果讨论任何问题得基础都是“xx书这么说了”而没有自己得思考和验证,这是非常不健康得学习方式
尽信书则不如无书,如果讨论任何问题得基础都是“xx书这么说了”而没有自己得思考和验证,这是非常不健康得学习方式
#8
手头机子没编译器啊......就是上来问问,给个准信就好...........大家搞得这么麻烦...........
#9
首先声明虚函数肯定要virtual
但基类已经有virtual关键字子类就可以省了
省不省和是否是纯虚函数无关。
但基类已经有virtual关键字子类就可以省了
省不省和是否是纯虚函数无关。
#10
好吧,我手头有编译器
经验证,VC2008下,纯虚函数不能省略virtual,只加=0,会报错
error C2253: “A::f”: 纯说明符或抽象重写说明符只允许在虚函数上使用
经验证,VC2008下,纯虚函数不能省略virtual,只加=0,会报错
class A
{
public:
void f()=0;
};
error C2253: “A::f”: 纯说明符或抽象重写说明符只允许在虚函数上使用
#11
class A
{
virtual void f() = 0;//不能省
};
class B : public A
{
void f() = 0;//能省
};
int main()
{
}
#12
省不省和是否是纯虚函数无关。
#13
基类显示声明了virtual的话,默认派生类都是虚函数
所以基类必须要显示声明,如果你有需求的话
所以基类必须要显示声明,如果你有需求的话
#14
不同的编译器有不同的规则。。。。。。建议加上virtual,即使是子类override了你的虚函数,也建议加上virtual,就是为了明确。。。
#15
bm
#16
.
#17
正解
#18
.......
#19
好东西,收藏了,谢谢楼主
#20
d
#21
拿走。
#22
纯虚有 =0的,带不带virtual 要看编译器了
#23
d
#24
么偶看到不用virtual还是虚函数的用法,关注。
#25
#3
#26
不懂
#27
基类里的虚函数都要加virtual吧, 纯虚函数就是在虚函数后面加=0.
#28
要。
#29
楼主所说有情况我不知道对不对,不过我知道我所引用的这个所说的一定对。
#30
[Quote=引用 29 楼 hellodan 的回复:]
引用 3 楼 arong1234 的回复:
基类必须要,没有听说过基类虚函数可以省略virtual的,
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
楼主所说有情况我不知道对不对,不过我知道我所引用的这个所说的一定对。
[/Quote
引用 3 楼 arong1234 的回复:
基类必须要,没有听说过基类虚函数可以省略virtual的,
派生类中可以省略,因为编译器可以从它基类中知道这是虚函数
楼主所说有情况我不知道对不对,不过我知道我所引用的这个所说的一定对。
[/Quote
#31
个人建议还是加上为好,厚积薄发嘛,
#32
派生类书写上可以省去,如果其上层父类已经声明该函数为virtual的话.
实际生成的代码没有区别
实际生成的代码没有区别
#33
11楼正解,
gcc 4.5.0通过。
gcc 4.5.0通过。
#34
人家也没说不加可以啊。
#35
C++ primer(第四版)好难读懂啊 例子一点都不好
#36
基类必须要用virtual 关键字,但是派生类里可以不用!
class Base
{
virtual void A();
}
class Derived : public Base
{
(virtual) void A();//这里的virtual 可要可不要
}
class Base
{
virtual void A();
}
class Derived : public Base
{
(virtual) void A();//这里的virtual 可要可不要
}
#37
mark 学习中
#38
标上吧,明显,好理解。
#39
派生类可以省略
#40
#41
学习了 帮顶