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