落叶知秋分享 http://blog.sciencenet.cn/u/wqfeng

博文

C++多态性

已有 2868 次阅读 2011-3-25 14:45 |个人分类:编程|系统分类:科研笔记|关键词:学者| 空间, 多态性, 虚函数

C++类继承:
class C:public A,public B
先调用A,后B,然后C
析构的时候是C,B,A
基类指针可以访问派生来的对象(仅基类部分)
虚函数:在派生类中可以重新实现,这不同于重载(是编译时多态),这是运行时多态:即同一个基类指针,可以实现不同的方法(因为其虚函数被继承类重置了)。如果可以明确用不同的指针(继承类),那么就不需要虚函数了,直接重新定义实现就可以了,也就是不用多态性的。
static:多个对象公用一个数据空间
内敛函数应该是每个对象一个拷贝,实际上类中定义的函数体都是内敛的,内敛函数的实现比较快,因为其直接类似于宏那样进行替换,因此使用时要注意,其代码不要太多,一般1到5行,另外其不要有循环和开关的,如果有,那么认为是一般函数,它是在编译时被替换的。
对于函数而言,本身就是多个对象只有一个空间,其与数据的联系是由this完成
关于public等都是类作用域,而不是对象的,即编译的时候检查是否在同一个类中
class base
{
int a;
public:
base(int v){a=v;}
void foo(base bs)
{
printf("%d,%dn",a,bs.a);
}
};
这个完全合法,因为base bs.a是在base这个类中,即可以访问私有成员(换句话说,foo函数中只看其变量是不是foo所在的类的,具体执行的时候才看其来自哪个拷贝数据)

因此同类对象可以“互相访问”对方的数据成员,因为其函数是公用的,上面例子就是。

推荐:C++ object model


https://m.sciencenet.cn/blog-347232-426207.html

上一篇:error LNK2005: xxx already defined in libcmt.lib(xxx.obj) MSVCRT.lib
下一篇:关于n-gram中的smoothing

0

发表评论 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-2 04:41

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部