1 继承
class Person {
public:
string name ;
Person(string name ):name(name){}
};
class Course {
private:
string name;
public:
Course(string name) :name(name) {}
};
// 成员变量中存在类对象时 ,需要在 构造函数中 ,进行初始化
class Student : public Person {
private:
string name ;
Course course ;
public:
Student(string name1, Course course) : Person(name), course(course) {
}
};
// 2.多态(虚函数)。
// 动态多态(程序的角度上:程序在运行期间才能确定调用哪个类的函数 == 动态多态的范畴)
// Java语言默认支持多态
// C++默认关闭多态,怎么开启多态? 虚函数 在父类上给函数增加 virtual关键字
// 静态多态 (编译期已经决定,调用哪个函数了,这个就属于静态多态的范畴) 重载(静态多态)
class Fulei{
public:
void show(){
cout << "Fulei show" << endl ;
}
};
class YijiZilei : public Fulei{
public:
void show(){
cout << "YijiZilei show" << endl ;
}
};
class ErjiZilei : public Fulei{
public:
void show(){
cout << "ErjiZilei show" << endl ;
}
};
void userFulei(Fulei * fulei){
fulei->show();
}
int main(){
YijiZilei * yijiZilei = new YijiZilei();
ErjiZilei * erjiZilei = new ErjiZilei();
userFulei(yijiZilei);
userFulei(erjiZilei);
delete yijiZilei;
delete erjiZilei;
return 0 ;
}
4 静态多态 ,通过 传入的参数 进行区分
void add(int number1, int number2) {
cout << number1 + number2 << endl;
}
void add(float number1, float number2) {
cout << number1 + number2 << endl;
}
void add(double number1, double number2) {
cout << number1 + number2 << endl;
}
int main() {
add(10000, 10000);
add(1.9f, 2.8f);
add(545.4, 654.54);
return 0;
}
5 纯虚函数
//5 纯虚函数 ,类似于 Java 的 抽象类
class TempClass{
public:
virtual void initView() = 0 ; // 纯虚函数
virtual void initData() = 0 ; // 纯虚函数
};
// 如果不实现 virtual 修饰的方法 ,这 HomeClass 无法实例化
class HomeClass : TempClass{
void initView() {
}
void initData() {
}
};
int main(){
HomeClass * ha = new HomeClass();
return 0 ;
}
7 模板函数
// 模板函数 == Java的泛型解决此问题
template <typename TT>
void addAction(TT n1, TT n2) {
cout << "模板函数:" << n1 + n2 << endl;
}
int main() {
addAction(1, 2);
addAction(10.2f, 20.3f);
addAction(545.34, 324.3);
addAction<string>("AAA", "BBB");
/*addAction(2, 324.3);
addAction(54, 324.3f);*/
return 0;