
C++入门学习
文章平均质量分 55
咸鱼酱
没有
展开
-
【C++】学习笔记草稿版系列2(函数重载)
函数重载C语言不允许有相同的函数名存在(冲突) 但是C++允许,但是两者都不允许重定义//重载int func(int a){}int func(char a){}//重定义int func(int a){}int func(int a){}ambiguous 二义性;计算机不能自己做选择 重载: 1. 函数名相同 2...原创 2018-02-11 23:57:21 · 343 阅读 · 0 评论 -
【C++】学习笔记草稿版17(运行时类型信息RTTI)
C++的多态是通过一张虚函数表(Virtual Table)来实现的,简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆写的问题,保证其真实反映实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得尤为重要了,它就像一个地图一样,指明了实际所应该调用的函数。C++的编译器应该是...原创 2018-02-23 21:30:24 · 328 阅读 · 0 评论 -
【C++】学习笔记草稿版16(基于多态的设计模式)
C++中有一种设计原则叫依赖倒置。也是给予多态的。 定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象。抽象不应该依赖细节。细节应该依赖抽象。问题由来:类A直接依赖类B,如果要将类A改为依赖类C,则必须要通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为...原创 2018-02-23 16:11:37 · 389 阅读 · 0 评论 -
【C++】学习笔记草稿版15(多态)
多态(PolyMorphism) 如果有几个相似而不完全相同的对象,有时人们要求在向它们发出同一个消息时,它们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。 例如,甲乙丙3个班都是高二年级,他们有基本相同的属性和行为,在同时听到上课铃声的时候,他们会分别走向三个不同的教室,而不会走向同一个教室。 又如在windows环境下,用鼠标双击一个对象(这就是向对象传递一个消息),如果对象...原创 2018-02-23 10:28:08 · 415 阅读 · 0 评论 -
【C++】学习笔记草稿版14(继承与派生)
继承与派生 (inherit & derive)表达的是一个意思。 在C++中可重用性(software reusability)是通过继承(inheritance)这一机制来实现的。如果没有掌握继承性,就没有掌握类与对象的精华。#if 0学生 姓名, 年龄, 性别, 学号, 吃饭, 学习老师 姓名, 年龄, 性别, 工号, 吃饭, 教学抽取: 姓名, 年龄, 性别, 吃...原创 2018-02-21 22:51:05 · 275 阅读 · 0 评论 -
【C++】学习笔记草稿版13(运算符重载提高篇)
函数操作符() 仿函数把类对象当成函数名一样使用,需要重载()class Pow{public: int operator()(int i) { return i*i; }}//power.operator()(i)-> power()i->power(i)使得类对象和函数更相似一些//仿函数仿函数主要应用于STL和模板...原创 2018-02-21 10:23:44 · 201 阅读 · 0 评论 -
【C++】学习笔记草稿版12(类对象的类型转换)
错误的写法float(5)/8正确的写法(float)5/8; static_cast<float>(5)/8;用类型转换构造函数进行类型转换实现其它类型到本类类型的转化。 转换构造函数格式class 目标类{ 目标类(const 源类 & 源类对象引用) { 根据需求完成从源类型到目标类型的转换 ...原创 2018-02-19 23:50:32 · 206 阅读 · 0 评论 -
【C++】学习笔记草稿版系列11(运算符重载)
运算符重载和友元之间是如何发生关系的友元重载,成员重载 单目和双目运算符可以重载 通常情况下: 双目运算符重载为成员的话需要一个参数,重载为友元的话需要两个参数const Complex operator+(Complex& another);friend Complex operator+(Complex & a, Complex & b);单目运...原创 2018-02-19 21:25:56 · 275 阅读 · 0 评论 -
【C++】学习笔记草稿版系列10(友元)
采用类的级之后实现了数据的隐藏和封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要的时间开销),但它破坏了类的封装性和...原创 2018-02-19 16:39:28 · 252 阅读 · 0 评论 -
【C++】学习笔记草稿版系列9(指向类成员的指针)
类数据成员 1. 数据成员 2. 函数成员定义<数据类型><类名>::*<指针名>赋值&初始化<数据类型><类名>::*<指针名>[=&<类名>::<非静态数据成员>]//和类发生关系,整个过程没有和对象发生关系指向类成员原创 2018-02-19 00:18:04 · 197 阅读 · 0 评论 -
【C++】学习笔记草稿版系列8(封装)
Encapsulationstructstruct Man{ string name; int age; float high; float salary; char sex;};struct Date{ int year; int month; int day;};int main(){ Dat...原创 2018-02-18 23:53:01 · 270 阅读 · 0 评论 -
【C++】学习笔记草稿版系列7(命名空间)
namespace:命名空间为了大型项目开发,而引入的一种避免命名冲突的一种机制。比如说,在一个大型项目中,要用到多家软件开发商提供的类库。在事先没有约定的情况下,两套类库可能存在同名的函数或是全局变量而产生冲突。项目越大,用到的类库越多,开发人员越多,这种冲突就越明显。//::作用域运算符,前面命名空间int v = 55;int main(){ int v = 5;...原创 2018-02-13 23:56:03 · 213 阅读 · 0 评论 -
【C++】学习笔记草稿版系列6(强制类型转换)
static_cast // dynamic_cast reinterpret_cast const_caststatic_cast:对于隐式类型可以转化的,即可以使用此类型。float a = 5.6;int b = 5;b = static_cast<int>(a);a = static_cast<float>(b); //C++ 不要随意发生强转...原创 2018-02-13 18:20:01 · 283 阅读 · 0 评论 -
【C++】学习笔记草稿版系列5(内联函数)
// Cint *pi = (int*)malloc(100);if (p == Null) return -1;// C++int *pi = new int[100];// 无需像C语言一样检查返回值,如果出错,new会自动报出一个异常;new很少会失败,但是申请之后往往用户会忘记释放try{ int Ipi = new int[100];}catch...原创 2018-02-13 11:19:56 · 220 阅读 · 0 评论 -
【C++】学习笔记草稿版系列4(C++内存管理)
malloc,free #include //Cint *p = (int*)malloc(size0f(int));//C++ 强制类型转换int *p = static_cast<int*>malloc(size0f(int));int *p = new int;初始化数组int main(){ struct Stu { ...原创 2018-02-12 23:03:14 · 266 阅读 · 0 评论 -
【C++】学习笔记草稿版系列3(引用基础与提高)
# include <iostream>using namespace std;int main(){ int a = 500; // *(int *)0xb0001234 = 500; int& ra = a; //ra是a的引用 printf("sizeof(a) = %d, sizeof(ra)=%d\n", sizeof(a)...原创 2018-02-12 15:02:18 · 213 阅读 · 0 评论 -
【C++】学习笔记草稿版系列1(C到C++类型安全增强)
C++ doesn’t like type transformation and point.//C++char *p = (char *)malloc(100); // malloc -> void*C uses 0 and 1 to demonstrate false and true. C doesn’t have string type and boolean typ...原创 2018-02-11 23:44:57 · 279 阅读 · 0 评论 -
【C++】学习笔记草稿版18(模板)
泛型(Generic Programming)即是指具有在多种数据类型上皆可操作的含义。泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。 泛型编程最初诞生于C++中,目的是为了实现C++的STL(标准模板库)。其语言支持机制就是模板(Templates)。模板的精神其实很简单:参数化类型。换句话说,把一个原本特定于某个类型的算法或类当中的类型信息抽调,抽出来做成模板参数T。...原创 2018-02-23 21:57:29 · 398 阅读 · 0 评论