C++ 面向对象开发2

  • static static函数没有this pointer,static数据只有一份,static函数只能处理static数据。static数据在class外需要提供定义。
  • 单例设计
    class A{
    public:
        static A& getInstance();
        setup() {...}
    
    private:
        A();;
        A(const A& rhs);  
        ...
    };
    
    
    A& A::getInstance()
    {
        static A a;
        return a;
    }

     

  • 类模版,函数模版,成员模版,C++标准库的算法都是函数模版。
  • namespace使用: using directive - using namespace std;using declaration - using std::cout;使用namespace 避免名称重复。
  • 构造函数由内而外,析构函数由外而内。
  • 组合:对象包含,或者引用包含。has-a关系。
  • 继承 is-a关系,子类可以在内存中继承数据,子类继承父类函数的调用权。
  • 继承 + 组合:derived构造顺序首先构造base,然后构造component;derived析构先析构自己,然后析构component,然后析构base,观察的结果。
  • non-virtual函数:你不希望derived class 重新定义你它;virtual 函数:你希望derived class 重新定义,它已有默认定义;pure virtual 函数:你希望derived class 一定要重新定义,你对它没有默认定义。
  • conversion function,类型转换函数。operator type();
  • 仿函数:重载了()的类
  • 智能指针(pointer-like classes)。
  • 迭代器(pointer-like classes)指向,代表容器中的一个元素。
  • reference 通常不用于声明变量,而用于参数类型和返回类型的描述。两个函数完全一样,只是const不同,构成重载。
posted @ 2023-08-22 15:25  stu--wy  阅读(35)  评论(0)    收藏  举报