一.联编包括:
静态联编:连接在编译阶段实现,列如:重载函数
动态联编:运行时进行,switch,if语句
#include<iostream>
#include<stdlib.h>
//重载
void go(int num)
{
}
void go(char *str)
{
}
//class
class A
{
public:
void go()
{
std::cout << "goA---";
}
void go(int num)
{
std::cout << "goA---num---";
}
void go(char *str)
{
std::cout << "goA---str---";
}
};
class B :public A
{
public:
void go()
{
std::cout << "goB---";
}
void go() const
{
std::cout << "goB---const---";
}
};
void main()
{
B *p1 = new B;
const B *p2 = new B;
p1->go();
p1->A::go(NULL);//调用go(int)
p1->A::go(nullptr); //空指针
p2->go(); //只能调用常函数
//p2->A::go(NULL);
//p2->A::go(nullptr); //空指针
std::cin.get();
}
void main2()
{
//编译阶段确定,静态联编
void(*p1)(char *str) = go;
void(*p2)(int num) = go;
go(NULL); //NULL为0
go(nullptr);//代表空指针,是一个类型
B *p = new B;
p->go();
p->A::go(NULL);
p->A::go(nullptr); //空指针
}
void main1()
{
// 动态联编
int num;
std::cin >> num;
if (num > 10)
{
system("calc");
}
else
{
system("tasklist");
}
}