分页: 1 / 1

问几个关于虚函数的概念--一直没搞懂

发表于 : 2007-05-28 15:48
gre_linewer
对虚函数理解不是很多,当时没深入学习,一直没搞懂书上的两句话:
1.虚函数为啥不能是静态的成员函数?
2.可以把析构函数定义为虚函数,但不能将构造函数定义为虚函数.
这句是不是说析构函数是非静态的,而构造函数是静态的

Re: 问几个关于虚函数的概念--一直没搞懂

发表于 : 2007-05-28 17:02
wkt
gre_linewer 写了:对虚函数理解不是很多,当时没深入学习,一直没搞懂书上的两句话:
1.虚函数为啥不能是静态的成员函数?
2.可以把析构函数定义为虚函数,但不能将构造函数定义为虚函数.
这句是不是说析构函数是非静态的,而构造函数是静态的
如果想用它做什么 那么换个方法
如果硬要它 那么再去翻更多的书

发表于 : 2007-05-28 17:34
karron
虚函数的目的就是让子类能够覆盖父类的行为,所以不能是静态函数。

Re: 问几个关于虚函数的概念--一直没搞懂

发表于 : 2007-05-28 18:20
5451vs5451
gre_linewer 写了:2.可以把析构函数定义为虚函数,但不能将构造函数定义为虚函数.
这句是不是说析构函数是非静态的,而构造函数是静态的
你说对了。

发表于 : 2007-05-28 19:42
gre_linewer
对构造函数是静态的,不是很明白?是不是说内存中只有此类的一个"空间"?
对于缺省构造函数,戴参数的构造函数,拷贝构造函数,赋值构造函数有怎么解释呢?
比如有一个:
class A{
.......//此类定义上述四个构造函数
};
A a;
A b(5);
A c(b);

发表于 : 2007-05-28 19:48
gre_linewer
to wkt:
"如果想用它做什么 那么换个方法"
"如果硬要它 那么再去翻更多的书"
一般书上都这么说.也没说具体原因;虚函数不是C++ 三大特点之一么?如果换了,特色何以体现?
karron 写了:虚函数的目的就是让子类能够覆盖父类的行为,所以不能是静态函数。
如果是静态的,是不是就只会执行父类的行为?

发表于 : 2007-05-28 20:35
wkt
gre_linewer 写了:to wkt:
"如果想用它做什么 那么换个方法"
"如果硬要它 那么再去翻更多的书"
一般书上都这么说.也没说具体原因;虚函数不是C++ 三大特点之一么?如果换了,特色何以体现?
karron 写了:虚函数的目的就是让子类能够覆盖父类的行为,所以不能是静态函数。
如果是静态的,是不是就只会执行父类的行为?
原来你为了这个啊!!
我觉得c++太复杂了
不过那个变量引用我很喜欢!!
为此才用g++编译!!

发表于 : 2007-05-28 21:06
5451vs5451
gre_linewer 写了:对构造函数是静态的,不是很明白?是不是说内存中只有此类的一个"空间"?
对于缺省构造函数,戴参数的构造函数,拷贝构造函数,赋值构造函数有怎么解释呢?
比如有一个:
class A{
.......//此类定义上述四个构造函数
};
A a;
A b(5);
A c(b);
构造函数是静态的,因为调用它之前不需要创建一个实例(这正是构造函数的功能),否则根本不可能创建任何实例。此外静态跟重载是两个不同的概念,它们之间是互不冲突的。

发表于 : 2007-05-28 23:42
gre_linewer
关键是几个概念放在一起,很容易搞混的.
偶很愚笨,理解一点.
5451vs5451 写了:否则根本不可能创建任何实例。
是不是可以这样理解:构造函数如果是非静态的(内含this针),必需先创建实例,然后才能调用它?