C++
可乐司机
这个作者很懒,什么都没留下…
展开
-
解决VS中scanf printf报错问题
1. 方法一在代码开头加入#define _CRT_SECURE_NO_WARNINGS2. 方法二将scanf和printf替换成scanf_s和printf_s原创 2017-04-09 15:35:44 · 2827 阅读 · 1 评论 -
C++ 拷贝构造函数
1. 定义 (const &); class A{ int x,y; public: A(); A(const A& a) { x = a.x+1; y = a.y+1; }} 其中,const是为了防止在函数中修改实参对象,可以省略。 拷贝构造函数也可以带有其他参数,但这原创 2017-04-26 09:13:49 · 4052 阅读 · 1 评论 -
C++ 常成员函数
C++ 常成员函数原创 2017-04-26 09:29:26 · 3386 阅读 · 2 评论 -
C++ 静态成员
在C++中,采用静态成员来解决同一个类的对象共享数据的问题。类的静态成员分为静态数据成员和静态成员函数。1. 静态数据成员 静态数据成员在一个类中只分配一次存储空间,也就是一个类的所有对象的静态数据成员共享一块存储空间。 在计数时往往使用的就是静态数据成员。2. 静态成员函数 静态成员函数只能访问静态成员(包括静态数据成员和静态成员函数),并且静态成员的访问也原创 2017-04-26 09:39:55 · 3051 阅读 · 0 评论 -
C++ 操作符重载
操作符重载是为了运算更加符合我们在数学上的使用习惯。1. 定义 operator 2. 原则 1)遵循已有操作符的语法,如单目只能重载成单目 2)遵循已有操作符的语义(但这个不是必须的) 3)操作符重载的实现路径:可以是一个类的非静态成员函数,也可以是带有类、结构、枚举以及它们的引用类型参数的全局函数 4)可重载的操作符原创 2017-04-26 10:11:36 · 3343 阅读 · 0 评论 -
C++ 教程
C++教程原创 2017-04-06 19:46:33 · 849 阅读 · 0 评论 -
C++ 继承方式
1. public 1)基类的public成员,在派生类中成员public成员 2)基类的protected成员,在派生类中成员protected成员 3)基类的private成员,在派生类中成员不可直接使用的成员2. protected 1)基类的public成员,在派生类中成员protected成员 2)基类的protected成员,在原创 2017-04-27 10:41:00 · 3897 阅读 · 1 评论 -
C++ 继承方式的调整
在任何继承方式中,除了基类的private成员外,都可以在派生类中分别调整其访问控制。调整格式 [public: | protected: | private: ] :: ;class A{ public: void f1(); void f2(); void f3(); protected: void g1(); void g2原创 2017-04-27 10:51:43 · 2970 阅读 · 0 评论 -
C++ 构造函数
C++ 析构函数原创 2017-04-13 22:36:41 · 6255 阅读 · 4 评论 -
C++ 析构函数
C++ 构造函数原创 2017-04-26 08:50:04 · 3559 阅读 · 0 评论 -
C++ 消息(成员函数调用)的动态绑定
1. 消息的多态性 C++把类看作类型,把以public方式(严格讲:只有public方式)继承的派生类看做基类的子类型,这样就使得在C++面向对象程序中存在下面的三种多态: 1)对象类型的多态:派生类对象的类型既可以是派生类,也可以是基类。 2)对象标志的多态:基类的指针或引用可以指向或引用基类对象,也可以指向或引用派生类对象。(但是派生类的指针只能指向或引用派生类原创 2017-04-27 11:12:19 · 5337 阅读 · 0 评论 -
C++ 纯虚函数和抽象类
1. 纯虚函数 定义格式:在函数原型后面加上符号 “=0” class A{ ... public: virtual int f()=0; }2. 抽象类 包含纯虚函数的类成为抽象类,用于为派生类提供一个基本框架和一个公共的对外接口,派生类(或派生类的派生类...),应对抽象基类的所有纯虚成员函数进行实现。(形式上跟Java的抽象类有点原创 2017-04-27 11:35:50 · 3825 阅读 · 0 评论 -
C++ 多继承
1. 定义格式 class : [] , [] ,... { };2. 重复继承——虚基类 在多继承中,如果直接基类有公共的基类,则会出现重复继承。这样,公共基类中的数据成员在多继承的派生类中皆有多个拷贝。 如: class A{ int x;};class B: public A{};class C: publ原创 2017-04-27 13:01:15 · 3533 阅读 · 0 评论 -
C++ 模板
1. 类属性 类属性: 一个程序实体能对多种类型的数据进行操作或描述的特性。 类属函数:一个函数能对不同类型的数据(参数)完成相同的操作。 类属类:一个类的成员类型可变。2. 函数模板 动态语言中在定义参数是不用指定类型,所以本身就具有类属性。 C++时一种静态类型语言,可以通过宏定义、指针类型参数、函数模板等方式实现类属性。3. 指针类型原创 2017-04-27 23:00:53 · 4678 阅读 · 1 评论 -
C++ 标准模板库
1. 容器 容器用于存储数据元素,它们是由长度(元素个数)可变的同类型的元素所构成的序列,如向量、集合、栈、队列等。 vector:用于快速定位(访问)任意位置上的元素以及主要在元素序列的尾部增加/删除元素的场合。在vector头文件中定义,用动态数组实现。 map 和 multimap:元素按关键字排序,multimap中不同元素的关键字可以相同,在map头文件中定原创 2017-04-28 00:16:36 · 5833 阅读 · 0 评论 -
C++ 成员的访问控制
1. public 访问不受限制,在程序的任何地方都能访问一个类的public成员。 public成员是类与外界的一个接口。2. private 只能在本类和友元中访问。3. protected 只能在本类、派生类和友元中访问。原创 2017-04-13 22:19:21 · 4000 阅读 · 0 评论 -
C++ this指针
每一个成员函数(静态成员函数除外)都有一个this隐藏的指针类型的形参this,其类型为: <类型> *const this; 当能够区分各种成员时,可以不用使用this指针,否知可以通过使用this指针来区分。class A{ int x,y;public: void f(); void g(int x){ this->x...原创 2017-04-13 22:26:37 · 6407 阅读 · 2 评论 -
C++ 引用类型
引用类型:可以获得指针类型的效果,但是又可以避免指针可读性和可维护性差等问题。1. 定义 &; 定义时要初始化 可以是除了void以外的任意C++类型。 如: int x=0; int &y=x;y=2;//此时x也是22. 引用类型 VS 指针类型 1)二者访问语法不同,指针是 * ,引用是 2)引用类型除了定义时指定原创 2017-04-13 21:50:48 · 5924 阅读 · 1 评论 -
C++ 无条件转移控制
1. goto转移控制 goto ; 是个标识符,定义格式为: ; 注意:不能用goto语句从函数外部转入函数的内部,也不能从函数内部转入到函数的外部; 一般情况,很少使用goto语句从复合语句外部转到复合语句内部,多用于从复合语句内部转到复合语句外部,如退出多重循环(goto语句会破坏程序的结构,只有偶尔在这种情况下才使用),但是要是否原创 2017-04-10 10:51:27 · 19709 阅读 · 4 评论 -
C++ main函数的返回值
main函数通过返回值把整个程序的执行情况告诉调用者(通常是操作系统,但是操作系统通常会忽视main函数的返回值),一般情况下return 0表示正常结束,return -1表示非正常结束。 main函数也可以不写return语句,这时当执行完最后一条语句后自动执行一条“return 0;”语句。 其他函数的返回值原理同此。原创 2017-04-10 11:04:53 · 14674 阅读 · 0 评论 -
C++ 子程序间的数据传递
1. 通过全局变量2. 通过子程序的参数和返回值机制 1)值传递:传递实参的一个拷贝,可以阻止子程序通过形参改变实参,但最多只能返回一个值 2)地址/引用传递:传递实参的地址,可以提高参数传递的效率,可以返回多个执行结果,但是会降低数据访问效率(通过间接的方式访问传输的数据)、可通过形参改变实参原创 2017-04-10 10:59:41 · 15278 阅读 · 3 评论 -
C++ 基本数据类型和表达式
1. C++是一种静态类型语言(运行前指定每个数据的类型),也是一种强类型语言(对数据的操作进行严格的类型检查)。2. bool类型数据在算术运算时true对应1,false对应0。3. typedef给已有类型取别名typedef ; 4. 常量包括两种:字面常量和符号常量。 字面常量:直接写出来的 符号常量:又称命名常量,指有名字的常量,如 con原创 2017-04-10 10:34:19 · 58268 阅读 · 17 评论 -
C++ 标识符的作用域
包括:局部作用域、全局作用域、文件作用域、函数作用域、函数原型作用域、名空间作用域、类作用域注意:潜在作用域,也就是同名变量的作用域问题。1. 局部作用域 指在函数定义或者复合语句中,从标识符的定义点开始到函数或者复合语句结束之间的程序段。 在同一个局部作用域内不能出现相同名字的两个局部变量(包括形参)。 一个函数内的复合语句又是一个局部作用域,也就是在函数内有某个原创 2017-04-10 12:02:07 · 15340 阅读 · 2 评论 -
C++ 宏与内联函数
因为函数调用需要开销(如:保护调用者的运行环境、参数传递、执行调用指令等),所以函数调用会带来程序执行效率的下降,特别是对一些小函数的频繁调用将是程序的效率有很大的降低。 C++提出了两种解决方法:宏、内联函数。1. 宏 宏是C++编译预处理系统处理的实体。 宏定义的4种格式: 1)#define 在编译前进行使用文字串进行宏替换原创 2017-04-10 12:59:42 · 7928 阅读 · 0 评论 -
C++ 函数名重载
函数名重载:给多个不同的函数(参数的类型或个数有所不同)取相同的名字注:如果两个函数的参数类型和个数都相同,知识他们的返回值类型不同,不能对其进行函数名重载,因为函数调用时不能区分调用的是哪个函数。 (和函数名重载没有太大关系:函数名可转换成函数函数指针)重载函数的绑定1. 精确匹配 萝卜放进萝卜筐,白菜放进白菜筐2. 提升匹配 精确匹配不到就原创 2017-04-10 13:23:36 · 7475 阅读 · 1 评论 -
C++ 标准库
1. 头文件 cmath(或math.h)abs; //绝对值acos; //反余弦acosf; //反余弦acosl; //反余弦asin; //反正弦asinf; //反正弦asinl; //反正弦atan; //反正切atan2; //y/x的反正切atan2f; //y/x的反正切atan2l; //y/x的反正切atanf; //反正切atanl; //反正切原创 2017-04-10 13:32:51 · 8690 阅读 · 0 评论 -
C++ 条件编译
使用编译预处理命令对编译过程进行知道,决定哪些代码需要编译。1. 格式1#ifdef / #ifndef #else #endif2. 格式2#ifdef / ifdef / #ifndef #elif #elif #else #endif原创 2017-04-10 13:40:40 · 6409 阅读 · 3 评论 -
C++ 变量的生存期
变量的生存期是指其在程序运行时占用内存空间的时间段。1. 静态生存期 从程序开始执行时分配到程序结束时收回。 如:全局变量2. 自动生存期 从程序执行到定义它们的复合语句时分配到复合语句执行完毕时收回。 如:局部变量、函数的参数3. 动态生存期 用new操作或者malloc函数来进行分配,用delete操作或者调用free函数来收回。原创 2017-04-10 12:27:41 · 9963 阅读 · 2 评论 -
C++ 数组类型
数组类型是一种有固定多个同类型的元素按一定次序所构成的数据类型。1. 一维数组 1)定义 []; 也可以借助 typedef 类定义 typedef []; 2)操作 通过下标访问元素。 注意下标是否越界。(C++中为了保证程序的执行效率不对下标越界进行检查,越原创 2017-04-10 20:12:07 · 9956 阅读 · 0 评论 -
C++联合类型
联合类型(又称共同体类型),一种能够表示多种数据(类型可以相同可以不同,变量名字不同就行)的数据类型。1. 联合类型的定义 union {}; 与结构类型类似,只是把struct 换成了 union. 在语义上,联合类型和结构类型的区别是,联合类型的所有成员占用同一块内存空间,该内存的空间大小是其最大成员的内存空间大小。2. 操作原创 2017-04-13 11:49:01 · 5176 阅读 · 0 评论 -
C++ 结构类型
结构类型用于表示由固定多个、类型可以不同的元素所构成的复合数据类型。1. 结构类型定义 struct {};或 typedef struct {}; 1)别名可以跟结构类型名不一样,但是一般都是一样的,设置别名是为了方便像其他变量类型一样定义变量,这是保留了C的语法。 2)在结构类型定义时,对成员变量进行初始化是没有意义的,因为类型不是程序运行时刻的实体原创 2017-04-13 11:22:51 · 8063 阅读 · 0 评论 -
C++ 学习大纲
C++ 基本数据类型和表达式C++ 无条件转移控制C++ 子程序间的数据传递C++ main函数的返回值C++ 标识符的作用域C++ 变量的生存期C++ 宏与内联函数C++ 函数名重载C++ 标准库C++ 条件编译C++ 枚举类型C++ 数组类型C++ 结构类型C++ 联合类型C++ 指针类型C++ 引用类型C++ 成员的访问控制C++ this指针C++ 构造函原创 2017-04-28 08:34:28 · 16654 阅读 · 14 评论 -
C++ 枚举类型
枚举类型是一种可以由用户自定义数据集的数据类型。 注意:bool类型可以看成是C++语言提供的一个预定义的枚举类型。1. 枚举类型定义 enum <枚举类型名> {<枚举值表>};2. 初始化 枚举类型的每一个枚举值都对应一个整型数,默认情况下,第一个枚举值的值是0,然后依次增1,但也可以显示初始化任意一个枚举值对应的整形数,...原创 2017-04-10 19:46:32 · 6532 阅读 · 0 评论 -
C++ 指针类型
指针,用来描述内存地址,并通过提供指针操作来实现与内存相关的程序功能。1. 定义 * ; 类型决定了指向的内存空间的大小。 指针变量也是一种变量,有着自己的内存空间,该空间上存储的是另一个变量的内存空间。 可以使用typedef取别名来减少定义变量时的一些麻烦,如typedef int* Pointer;2. 操作 1)原创 2017-04-13 20:58:19 · 11398 阅读 · 0 评论 -
C++ 异常处理机制
void f(){ ... ...throw 1; ... ...throw 1.0; ... ...throw "abcd"; ...}int main(){ ... try { f(); } catch(int){} catch(double){} catc原创 2017-04-28 00:26:47 · 6031 阅读 · 0 评论