摘要: 静态联编所支持的多态性称为编译时的多态性。当调用重载函数时,编译器可以根据调用时所使用的实参在编译时就确定下应调用哪个函数。 动态联编所支持的多态性称为运行时的多态性,这是由虚函数来支持。虚函数类似于重载函数,但与重载函数的实现策略不同,即对虚函数的调用使用动态联编。 如果让编译器动态联编,也就是在 阅读全文
posted @ 2022-10-04 20:35 slowlydance2me 阅读(13) 评论(0) 推荐(0) 编辑
摘要: virtual 关键字 虚函数/虚方法 前缀virtual关键字表示子类父类有联系 virtual 的作用是告诉编译器,对该函数的调用 是通过指针或者引用的话,在运行时才可以确定类型,这个指针或者引用指的对象是什么类型就调什么类型 Polymorphism多态性的体现: 其中P就是多态的,p指的☞谁 阅读全文
posted @ 2022-10-04 19:57 slowlydance2me 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 子类对象可以当成父类对象来看 阅读全文
posted @ 2022-10-04 19:16 slowlydance2me 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 引用: 类型 & Y = X; Y是X的另一个名字 pointers vs references(指针vs引用) (ps:引用就是用的const指针) java:所有对象放在堆里 只能用指针(不能计算用的const)访问(但是因为只有指针一种方式,就可以不要*,斌且命名为‘引用’) C++:对象可以 阅读全文
posted @ 2022-10-04 10:48 slowlydance2me 阅读(14) 评论(0) 推荐(0) 编辑
摘要: const变量 const 是变量 不是常量 指针const 写在*号后面 const 函数可以构成重载 阅读全文
posted @ 2022-10-04 10:13 slowlydance2me 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 调用一个函数需要额外做一些什么: 推入参数进堆栈 推入返回地址进堆栈 准备返回值在寄存器 推出所有推入 解决方法: 内联函数 Inline Function 内联函数可以消除多余操作 例如: 形式 效果 运行 函数仅在编译时插入到合适的地方使用,在运行时并没有出现这个函数 inline 在函数声明和 阅读全文
posted @ 2022-10-04 08:52 slowlydance2me 阅读(22) 评论(0) 推荐(0) 编辑
摘要: C++中如果子类中的函数与父类的函数重名那么父类中的重名函数在这个子类中直接被隐藏 函数重载 参数表不同的函数才是函数重载 参数个数不同、参数类型不同 只有返回值类型不同不行 默认参数 默认参数只能从最右边开始定义 仅在函数原型里可以定义 编译时 编译器看到原型声明 默认参数是什么就给什么 尽量不要 阅读全文
posted @ 2022-09-29 16:20 slowlydance2me 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 继承 重用接口 继承是去用一个已经存在的类,克隆它,然后在这个类的基础上做一些增加和修改 继承: 1.语言实现技术 2.也是重要的面向对象设计方法之一 3.遵循共享的设计: 成员数据 成员函数 接口(数据和函数中对外公开的部分) 4.C++的关键技术 它的能力是去定义这个特征 或者实现一个类作为超集 阅读全文
posted @ 2022-09-29 13:46 slowlydance2me 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 继承是实现软件重用的一种方式。 在C++中拥有另一种实现软件重用的方式 Composition:对象组合 用已经有的对象制造新的对象 (设计一个类的时候它的成员变量可以是另一个类的对象) 对象组合的两种方式: (内存模型复杂度:访问对象时既可以通过对象本身访问,也可以通过指针访问) Fully (全 阅读全文
posted @ 2022-09-29 12:57 slowlydance2me 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 初始化p A(){ p = 0;cout<<"A::A()"<<endl;} 初始化列表 Initializer list A():p(0){ cout<<"A::A()"<<endl;} 初始化vs赋值 赋值=默认初始化+赋值 尽量单独使用初始化 阅读全文
posted @ 2022-09-26 14:24 slowlydance2me 阅读(9) 评论(0) 推荐(0) 编辑