当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 问几个关于虚函数的概念--一直没搞懂
帖子发表于 : 2007-05-28 15:48 
头像

注册: 2006-11-22 10:57
帖子: 180
送出感谢: 0 次
接收感谢: 0 次
对虚函数理解不是很多,当时没深入学习,一直没搞懂书上的两句话:
1.虚函数为啥不能是静态的成员函数?
2.可以把析构函数定义为虚函数,但不能将构造函数定义为虚函数.
这句是不是说析构函数是非静态的,而构造函数是静态的


_________________
Ubuntu 8.04
IBM R52-18465DC
CPU:PM 1.73Ghz DDR2:768MB 533Mhz
INTEL 915GM/915PM
ATI Mobility Radeon X300 64MB
40G SATA


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 问几个关于虚函数的概念--一直没搞懂
帖子发表于 : 2007-05-28 17:02 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
gre_linewer 写道:
对虚函数理解不是很多,当时没深入学习,一直没搞懂书上的两句话:
1.虚函数为啥不能是静态的成员函数?
2.可以把析构函数定义为虚函数,但不能将构造函数定义为虚函数.
这句是不是说析构函数是非静态的,而构造函数是静态的

如果想用它做什么 那么换个方法
如果硬要它 那么再去翻更多的书


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-05-28 17:34 
头像

注册: 2005-06-11 14:03
帖子: 6226
地址: 不明真相的群众
送出感谢: 0 次
接收感谢: 0 次
虚函数的目的就是让子类能够覆盖父类的行为,所以不能是静态函数。


_________________
我的blog,关于技术,软件,linux,vim <---- 所有博客均被河蟹.


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 问几个关于虚函数的概念--一直没搞懂
帖子发表于 : 2007-05-28 18:20 
头像

注册: 2006-07-14 18:56
帖子: 345
地址: Apple Valley, Planet Tux, Linux System
送出感谢: 0 次
接收感谢: 0 次
gre_linewer 写道:
2.可以把析构函数定义为虚函数,但不能将构造函数定义为虚函数.
这句是不是说析构函数是非静态的,而构造函数是静态的


你说对了。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-05-28 19:42 
头像

注册: 2006-11-22 10:57
帖子: 180
送出感谢: 0 次
接收感谢: 0 次
对构造函数是静态的,不是很明白?是不是说内存中只有此类的一个"空间"?
对于缺省构造函数,戴参数的构造函数,拷贝构造函数,赋值构造函数有怎么解释呢?
比如有一个:
class A{
.......//此类定义上述四个构造函数
};
A a;
A b(5);
A c(b);


_________________
Ubuntu 8.04
IBM R52-18465DC
CPU:PM 1.73Ghz DDR2:768MB 533Mhz
INTEL 915GM/915PM
ATI Mobility Radeon X300 64MB
40G SATA


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-05-28 19:48 
头像

注册: 2006-11-22 10:57
帖子: 180
送出感谢: 0 次
接收感谢: 0 次
to wkt:
"如果想用它做什么 那么换个方法"
"如果硬要它 那么再去翻更多的书"
一般书上都这么说.也没说具体原因;虚函数不是C++ 三大特点之一么?如果换了,特色何以体现?

karron 写道:
虚函数的目的就是让子类能够覆盖父类的行为,所以不能是静态函数。

如果是静态的,是不是就只会执行父类的行为?


_________________
Ubuntu 8.04
IBM R52-18465DC
CPU:PM 1.73Ghz DDR2:768MB 533Mhz
INTEL 915GM/915PM
ATI Mobility Radeon X300 64MB
40G SATA


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-05-28 20:35 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
gre_linewer 写道:
to wkt:
"如果想用它做什么 那么换个方法"
"如果硬要它 那么再去翻更多的书"
一般书上都这么说.也没说具体原因;虚函数不是C++ 三大特点之一么?如果换了,特色何以体现?

karron 写道:
虚函数的目的就是让子类能够覆盖父类的行为,所以不能是静态函数。

如果是静态的,是不是就只会执行父类的行为?

原来你为了这个啊!!
我觉得c++太复杂了
不过那个变量引用我很喜欢!!
为此才用g++编译!!


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-05-28 21:06 
头像

注册: 2006-07-14 18:56
帖子: 345
地址: Apple Valley, Planet Tux, Linux System
送出感谢: 0 次
接收感谢: 0 次
gre_linewer 写道:
对构造函数是静态的,不是很明白?是不是说内存中只有此类的一个"空间"?
对于缺省构造函数,戴参数的构造函数,拷贝构造函数,赋值构造函数有怎么解释呢?
比如有一个:
class A{
.......//此类定义上述四个构造函数
};
A a;
A b(5);
A c(b);


构造函数是静态的,因为调用它之前不需要创建一个实例(这正是构造函数的功能),否则根本不可能创建任何实例。此外静态跟重载是两个不同的概念,它们之间是互不冲突的。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-05-28 23:42 
头像

注册: 2006-11-22 10:57
帖子: 180
送出感谢: 0 次
接收感谢: 0 次
关键是几个概念放在一起,很容易搞混的.
偶很愚笨,理解一点.
5451vs5451 写道:
否则根本不可能创建任何实例。

是不是可以这样理解:构造函数如果是非静态的(内含this针),必需先创建实例,然后才能调用它?


_________________
Ubuntu 8.04
IBM R52-18465DC
CPU:PM 1.73Ghz DDR2:768MB 533Mhz
INTEL 915GM/915PM
ATI Mobility Radeon X300 64MB
40G SATA


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译