Skip to main content

C++特性

Published: 2020-11-17

视 C++ 为一个语言联邦(C、Object-Oriented C++、Template C++、STL) C++ Primer

虚函数与纯虚函数 #

纯虚函数:面向接口编程
虚函数:面向??编程

类的大小 #

#include <iostream>
using namespace std;

class basic{
public:
    static int a;
    char b[10];
    int c;

    static void fun1(){cout<<"fun1"<<endl;}
    void fun2(){cout<<"fun2"<<endl;}
    virtual void fun3(){cout<<"fun3"<<endl;}
    virtual void fun4(){cout<<"fun4"<<endl;}
};

int basic::a=1;

不要在头文件定义(初始化静态数据成员),大多数情况下会引起重复定义错误。

  • 数据成员:静态、非静态
  • 函数成员:静态、非静态、虚函数

如果一个类中存在虚函数,编译器会做以下三件事

  • 为该类分配一个虚函数表,它存有虚函数在执行器的地址
  • 在该类中安插一个虚指针,指向该类的虚表
  • 将每一个虚函数的入口地址存放在虚函数表中相应的slot

64位系统8字节对其,a不占此类内存,b占10个字节,c4个字节,虚指针一个地址字节8字节,故为24

空类的大小为1:标准禁止对象大小为 0,因为两个不同的对象需要不同的地址表示。

面向对象编程 #

  • 封装
  • 继承
  • 多态

如何只启动一个APP #

Reference #

https://github.com/huihut/interview


Next: 设计模式
Previous: 富爸爸穷爸爸