C++继承重名问题
2017-08-13 15:14
141 查看
一、重名成员处理
1.派生类定义了与基类同名的成员,在派生类中访问同名成员时屏蔽了基类的同名成员
2.在派生类中使用基类的同名成员,显式地使用类名限定符:
类名 :: 成员
class base
{ public :
int a , b ;
} ;
class derived : public base
{ public :
int b , c ;
} ;
void f ()
{ derived d ;
d . a = 1 ;
d . base :: b = 2 ;
d . b = 3 ;
d . c = 4 ;
};
二、重名成员函数
#include<iostream.h>
class A
{ public:
int a1, a2 ;
A( int i1=0, int i2=0 ) { a1 = i1; a2 = i2; }
void print()
{ cout << "a1=" << a1 << '\t' << "a2=" << a2 << endl ; }
};
class B : public A
{ public:
int b1, b2 ;
B( int j1=1, int j2=1 ) { b1 = j1; b2 = j2; }
void print() //定义同名函数
{ cout << "b1=" << b1 << '\t' << "b2=" << b2 << endl ; }
void printAB()
{ A::print() ; //派生类对象调用基类版本同名成员函数
print() ; //派生类对象调用自身的成员函数
}
};
void main()
{ B b ; b.A::print(); b.printAB(); }
运行结果:
小结:
通过继承,类B具有两个同名成员函数
void A::print(); // void print( A * this );
void B::print(); // void print( B * this );
派生类也是基类,基类指针可以指向
派生类对象
派生类中定义与基类同名的成员函数,
称为重载成员函数
1.派生类定义了与基类同名的成员,在派生类中访问同名成员时屏蔽了基类的同名成员
2.在派生类中使用基类的同名成员,显式地使用类名限定符:
类名 :: 成员
class base
{ public :
int a , b ;
} ;
class derived : public base
{ public :
int b , c ;
} ;
void f ()
{ derived d ;
d . a = 1 ;
d . base :: b = 2 ;
d . b = 3 ;
d . c = 4 ;
};
二、重名成员函数
#include<iostream.h>
class A
{ public:
int a1, a2 ;
A( int i1=0, int i2=0 ) { a1 = i1; a2 = i2; }
void print()
{ cout << "a1=" << a1 << '\t' << "a2=" << a2 << endl ; }
};
class B : public A
{ public:
int b1, b2 ;
B( int j1=1, int j2=1 ) { b1 = j1; b2 = j2; }
void print() //定义同名函数
{ cout << "b1=" << b1 << '\t' << "b2=" << b2 << endl ; }
void printAB()
{ A::print() ; //派生类对象调用基类版本同名成员函数
print() ; //派生类对象调用自身的成员函数
}
};
void main()
{ B b ; b.A::print(); b.printAB(); }
运行结果:
小结:
通过继承,类B具有两个同名成员函数
void A::print(); // void print( A * this );
void B::print(); // void print( B * this );
派生类也是基类,基类指针可以指向
派生类对象
派生类中定义与基类同名的成员函数,
称为重载成员函数
相关文章推荐
- C++继承、虚继承、虚函数类的大小问题
- C++虚继承(十) --- 谈谈陈皓遗留的问题
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- C++的继承参数问题
- Ruby Mixin与c++多继承的问题
- c++ 函数参数和成员变量重名问题
- VS项目配置中 C++目录--包含目录(or库目录继承值的删除问题)
- 关于c++中的public继承,private继承,以及protect继承的问题
- C++之钻石问题和解决方案(菱形继承问题)
- C++知识点随笔(四):耦合问题、new和malloc、虚析构、多继承
- C++继承问题
- c++子类继承父类的覆盖问题
- C++中的继承权限问题
- 在C++的虚继承中要注意的一个传值问题
- C++中的类继承的问题
- C++继承的一点细节问题
- C++多重继承的一些问题
- 面试中c++中单继承关于虚函数常遇到的4个问题
- 多继承实现COM类中的"菱形问题" C++也有一样的菱形问题
- C++中 public和private派生类继承问题和访问权限问题