您的位置:首页 > 编程语言 > C语言/C++

C++中的overload,隐藏、override有什么区别?

2013-05-26 14:50 405 查看
        1. overload:

#include <iostream>
using namespace std;

void print(int x)
{
cout << "int C++" << endl;
}

void print(char c)
{
cout << "char C++" << endl;
}

int main()
{
int n = 1;
char ch = 'a';
print(n);
print(ch);

return 0;
}      结果为:
int C++

char C++

      2. 隐藏:

#include <iostream>
using namespace std;

class A
{
public:
void print(int x)
{
cout << "int C++" << endl;
}
};

class B : public A
{
public:
void print(int x)
{
cout << "char C++" << endl;
}
};

int main()
{
int n = 1;
char ch = 'A';

A a;
a.print(n);

B b;
b.print(ch);

return 0;
}
     结果为:

int C++

char C++

      下面再看一个隐藏的例子(千万要注意,下面这个程序并不是override):

#include <iostream>
using namespace std;

class A
{
public:
virtual void print(int x)
{
cout << "int C++" << endl;
}
};

class B : public A
{
public:
virtual void print(char x)
{
cout << "char C++" << endl;
}
};

int main()
{
int n = 1;
char ch = 'A';

A a, *p;
p = &a;
p->print(n);

B b;
p = &b;
p->print(ch);

return 0;
}      结果为:
int C++

int C++

      3. override

#include <iostream>
using namespace std;

class A
{
public:
virtual void print(int x)
{
cout << "int C++" << endl;
}
};

class B : public A
{
public:
virtual void print(int x)
{
cout << "char C++" << endl;
}
};

int main()
{
int n = 1;
char ch = 'A';

A a, *p;
p = &a;
p->print(n);

B b;
p = &b;
p->print(ch);

return 0;
}
      结果为:
int C++

char C++
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐