this指针
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。
this指针核心就是指向对象本身,学c++课的时候介绍了一个用法,当形参名称和类成员名称一样时,就可以使用this指针区分,如下所示
class test{
int x;
public:
test(int &x){
this->x=x;
}
}
类继承
在二叉搜索树的继承二叉树的代码中,二叉搜索树没有定义新的数据成员,直接使用Bintree中的数据成员,调用其函数,但是编译会报错,显示 ‘xxxx’ was not declared in this scope,显示成员为声明,这时候在未声明的成员前加上this指针就可以解决这个问题
二叉树:https://blog.csdn.net/qq_40602655/article/details/114552635)
二叉搜索树:https://blog.csdn.net/qq_40602655/article/details/114638453
template <class T>
class BinSearchTree:public BinTree<T>{
protected:
BinTreeNode<T> * Insertnode(BinTreeNode<T> *subtree,T &x);
BinTreeNode<T> * deletenode(BinTreeNode<T> *subtree,T &x);
public:
void buildBStree();
BinTreeNode<T> * Findtreenode(const T &X);
void Insertnode(T &x){
this->root=Insertnode(this->root,x);}
void deletenode(T &x){
this->root=deletenode(this->root,x);}
BinTreeNode<T> * Maxnode(){
return Maxnode(this->root);}
BinTreeNode<T> * Minnode(){
return Minnode(this->root);}
};