随笔分类 - c++
摘要:1)容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器; 容器(container)用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在STL中都被实现为容器。 序列容器 vecto
阅读全文
摘要:RTTI(Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引用所指的对象的实际派生类型。 RTTI提供了以下两个非常有用的操作符: (1)typeid操作符,返回指针和引用所指的实际类型。 (2)dynamic_cast操
阅读全文
摘要:#include和前置声明(forward declaration) 1. 当不需要调用类的实现时,包括constructor,copy constructor,assignment operator,member function,甚至是address-of operator时,就不用#inclu
阅读全文
摘要:一、单一职责原则(Single Responsibility Principle,SRP) 含义: 1、避免相同的职责分散到不同的类中 2、避免一个类承担太多职责 作用: 1、可以减少类之间的耦合 2、提高类的复用性 一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,
阅读全文
摘要:程序的错误大致可以分为三种,分别是语法错误、逻辑错误和运行时错误: 1) 语法错误在编译和链接阶段就能发现,只有 100% 符合语法规则的代码才能生成可执行程序。语法错误是最容易发现、最容易定位、最容易排除的错误,程序员最不需要担心的就是这种错误。 2) 逻辑错误是说我们编写的代码思路有问题,不能够
阅读全文
摘要:虚函数是动态联编的基础。虚函数是非static的成员函数 说明虚函数的方法如下: virtual <类型说明符><函数名>(<参数表>); 虚函数的使用方法是: 1、在基类用virtual声明成员函数为虚函数。 这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便地被调用。在类外定义虚函数
阅读全文
摘要:重写(覆盖):override 是指派生类中存在重新定义的函数。 (1)重写是指派生类函数覆盖基类函数。 (2)重写的特征: ①不同的作用域(分别位于派生类与基类); ②函数名字相同; ③参数相同; ④基类函数必须是虚函数;(重写的基类中被重写的函数必须有virtual修饰) ⑤重写函数必须和原函数
阅读全文
摘要:在类定义中,它的成员(包括数据成员和 成员函数)可以用关键字static声明为静 态的,这些成员称为静态成员 静态成员的特性: • 不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的 对象共享 静态成员包括: • 静态数据成员 • 静态成员函数 在一个类中,若将一个数据成员
阅读全文
摘要:运算符重载函数的形式是: • 返回类型 operator 运算符符号 (参数说明) { //函数体的内部实现 } • 至少有一个参数是自定义类型(数组,类) • 如果是单目运算符,只传一个参数 • 如果是双目运算符,传两个参数 c++也规定了一些运算符不能够自定义重载 • 例如 ::、sizeof、
阅读全文
摘要:C++中的友元为数据隐藏这堵不透明的墙 开了一个小孔,外界可通过这个小孔窥 视类内部的秘密,友元是一扇通向私有 成员的后门 友元可分为:友元函数 友元成员 友元类 友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但它可以访 问该类的所有对象的成员,包括私有成 员和公有成员 在类定义中声明
阅读全文
摘要:malloc/free是标准的库函数,而new/delete是操作符 匹配使用原则:malloc(calloc/realloc)和free 以及new/new[] 和delete/delete[]; delete 释放new分配的单个对象指针指向的内存 delete[] 释放new分配的对象数组指针
阅读全文
摘要:派生的方式 公有方式派生(public) 私有方式派生(private) 保护方式派生(protected) 多继承 多继承 多继承可以看作是单继承的扩展。所谓多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一 个单继承。 当使用多继承时要注意避免发生二义性 class A { v
阅读全文
摘要:结构与类的区别是:默认访问级别不同 类使用注意: • 类的声明中的 private 和 public两个关键字可以按任意顺序出现任意次。为了使程序更加清晰,把所有私有成员和公有成员归类放在一起 • 除了 private 和 public 之外,还有 protected(保护性成员)关键字 • 数据成
阅读全文
摘要:简单分为:全局作用域、局部作用域、语句作用域 如果希望在局部变量的作用域内使用同名的全局变量,可以在该变量前加上“::” ::aver=20 #include<iostream> using namespace std; int var = 20; int main(int argc, char *
阅读全文
摘要:编译器将使用相应的函数代码替换函数调用。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。 内联函数与宏定义的区别 C语言使用预处理器语句#define来提供宏。如下例所示: #define SQUARE(X) X*X 宏定义时通过文本替换开实现的--X是参数的符号标记。 a = s
阅读全文
摘要:命名空间的定义: namespace myName{ //namespace member ...... } //注意没有分号 例: namespace CompanyA{ void fun() {//......} int num; } CompanyA::fun();CompanyA::num
阅读全文