C++面试问题总结
2018-03-29 本文已影响49人
柚梨柚梨
指针与数组的size
int main()
{
char b[100];
char* p = b;
cout << sizeof(p) << " " << sizeof(b) << " " << sizeof(*b) << endl; // 4 100 1
}
虚函数、重写、重载
#include <iostream>
using namespace std;
class Animal
{
public:
virtual void bark() = 0; // 虚函数->多态
virtual void bark2()
{
cout << "rua" << endl;
}
void bark3()
{
cout << "rua" << endl;
}
};
class Cat : public Animal
{
public:
void bark() // override 重写
{
cout << "miao" << endl;
}
void bark(int a) // overload 重载
{
cout << "miao" << endl;
}
void bark2()
{
cout << "miao" << endl;
}
void bark3()
{
cout << "miao" << endl;
}
};
int main()
{
Animal* pa;
pa = new Cat();
pa->bark(); // miao
pa->bark2(); // miao
pa->bark3(); // rua
}
public, private, protected
访问权限
- public:任何人都可以访问
- private:除了自己和友元可以,其它都不可以
- protected:除了自己和友元和继承者可以,其它都不可以访问
- friend: 具体看 https://blog.csdn.net/u012861978/article/details/52095607
啥是友元
#include <iostream>
using namespace std;
class A
{
friend class C; //并不是成员
public:
int pub;
private:
int priv;
protected:
int prot;
};
class B : public A
{
B()
{
pub = 1;
// priv = 1; can not access
prot = 1;
}
};
class C // A的友元
{
C()
{
A a;
a.pub = 1;
a.prot = 2; // 可以访问protected
a.priv = 2; // 可以访问private
}
};
int main()
{
A example;
example.pub = 2;
// example.prot example.priv can not access
}
继承
- private 属性不能够被继承。
- 使用private继承,父类的protected和public属性在子类中变为private;
- 使用protected继承,父类的protected和public属性在子类中变为protected;
- 使用public继承,父类中的protected和public属性不发生改变;