C++面试问题总结

作者: 柚梨柚梨 | 来源:发表于2018-03-29 19:36 被阅读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

访问权限

啥是友元

#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属性不发生改变;

相关文章

网友评论

    本文标题:C++面试问题总结

    本文链接:https://www.haomeiwen.com/subject/bmrvcftx.html