
C++ 基础笔记
文章平均质量分 86
xunmengpiaoyun
这个作者很懒,什么都没留下…
展开
-
C++ 类的拷贝(或复制)和赋值
类的拷贝(复制)针对从无到有新创建的对象,类赋值是针对已存在的对象。C++ 类的拷贝(或复制)举例:Box box1(box2) 或者 Box box1=box2; (对象box2之前已经定义); 拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它的唯一的一个参数是本类型的一个引用变量。在自己未主动定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数("位拷贝"转载 2013-12-18 16:08:33 · 8748 阅读 · 0 评论 -
C++ 多态性与虚函数
多态性:(一个借口多种方法)Cylinder cy1; cy1.area();Point &pRef = cy1; pRef.area(); // 调用Point类中的area()等价于cy1.Point::area();Circle &cRef = cy1; cRef.area(); // 调用Circle类中的area();pRef是cy1中基类Point部分的别名;c原创 2013-11-26 21:53:52 · 1088 阅读 · 0 评论 -
C++ 中四种强制类型转换
C++ 同时提供了四种新的强制转型形式(通常称为新风格的或 C++ 风格的强制转型):const_cast(expression)主要用于去除变量的const属性dynamic_cast(expression)这种强制类型转换的方式主要用于基本类型之间的转换,不能够用于基本类型之间的指针转换。用于有继承关系类对象之间的转换和类指针之间的转换。reinterpre转载 2013-12-20 17:21:00 · 766 阅读 · 0 评论 -
C++ 输入输出流之文件操作和文件流
1. 根据文件中数据的组织形式,文件分为:ASCII文件(文本文件或者字符文件):它的每个字节存放一个ASCII代码,代表一个字符(一一对应),易于阅读,方便显示和打印。例如:43,00000100 00000011二进制文件(内部格式文件或字符文件):是把内存中的数据按照其在存储中的形式原样输出到磁盘上存放,节省空间,输入输出快,效率高。例如:43,001原创 2013-12-01 18:46:23 · 4018 阅读 · 0 评论 -
[转载] C++ 中字节对齐
一、什么是字节对齐,为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些转载 2013-12-27 17:55:50 · 578 阅读 · 0 评论 -
变量的命名法
匈牙利命名法1. 以一个或者多个小写字母开头,来指定数据类型。2. 其后是一个或者多个第一个字母大写的单词,指出变量的用途。 如:chGrade; nLength; bOnOff; strStudentName;驼峰命名法(骆驼式命名法)1. 由一个或多个单字连结在一起;2. 第一个单词以小写字母开始;3. 第二个单词的首字母大写或每一个单词的首字母都采用转载 2013-11-05 08:58:03 · 772 阅读 · 0 评论 -
C++ 异常处理
程序常见的错误语法错误/编译错误:比如关键字拼写错误,变量名未定义,语句末尾缺少分好,括号不匹配,不能找到头文件......运行错误/:程序在运行过程中出现错误:例如除数为零,访问地址非法,输入数据有误......异常处理的方法如果执行一个函数过程中出现异常,如果本函数没有异常处理,就逐级向上抛出一个异常信息。最高一级也无法处理,最后异常终止程序执行。异常处理中的三分部分:原创 2013-12-03 15:18:08 · 1059 阅读 · 0 评论 -
C++ 指针和引用
指针:指针的定义:一个变量的地址成为该变量的指针。指针变量的的定义:int *pointer1;给变量指针赋值:pointer1 = &i; // int i;不能用一个整数给一个指针变量赋初值:如pointer1 = 2000;指针变量只能存放同类型变量的地址。指针和数组:int a[10]; int *p = &a[0]; 等价于int *p = a; //原创 2013-11-23 16:46:49 · 961 阅读 · 0 评论 -
C++ 类
类和结构体的异同:结构体中成员默认为public,而class默认为private。在类外定义成员函数(一般多于3行的函数):void Student::display() {...};而::display()或者display()表示全局函数。this指针指向当前对象。inline函数:如果类体中不包括循环等控制结构,C++系统自动将他们作为内置函数来处理。带参数的构造函数:Box::B原创 2013-11-25 15:10:26 · 662 阅读 · 0 评论 -
C++ 知识点备注
C++ 虚函数表解析原创 2013-12-18 15:01:01 · 655 阅读 · 0 评论 -
boost 内存池
1. 什么是内存池 “池”是在计算机技术中经常使用的一种设计模式,其内涵在于:将程序中需要经常使用的核心资源先申请出来,放到一个池内,由程序自己管理,这样可以提高资源的使用效率,也可以保证本程序占有的资源数量。经常使用的池技术包括内存池、线程池和连接池等,其中尤以内存池和线程池使用最多。 内存池(MemoryPool)是一种动态内存分配与管理技术。通常情况下,程序员习惯直接使用转载 2013-12-17 14:31:50 · 1739 阅读 · 0 评论 -
boost 基础
参考文章:Boost入门转载 2013-12-16 14:21:52 · 1050 阅读 · 0 评论 -
boost 之 智能指针
smart_ptr简介boost中智能指针(smart_ptr)解决了每次 new 出来的内存不需要人为delete。智能指针包括:auto_ptr,scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr。访问智能指针包含的裸指针则可以用 get() 函数。由于智能指针是一个对象,所以 if (my_smart_obje转载 2013-12-17 09:46:21 · 937 阅读 · 0 评论 -
C++ 常用函数记录
求平方根:double sqrt(double)x的y次幂:double pow( double x, double y )求字符串的长度:int strlen(char *s) // 不包含'\0'字符串比较:int strcmp(const char *s1,const char * s2); // s1>s2,返回一个正数;s1字符串转换为数字: int atoi原创 2013-11-23 12:40:34 · 627 阅读 · 0 评论 -
sizeof 与 strlen
sizeof 功能:求对象所占用的字节大小用法:sizeof(类型说明符,数组名或表达式)或sizeof 变量名;返回值unsigned int;说明:sizeof是一个操作符而非函数例1:int i;sizeof( i ); // oksizeof i; // oksizeof( int ); // oksizeof int; // errorsi转载 2013-11-25 11:23:59 · 582 阅读 · 0 评论 -
assert() 宏用法
1. 注意:assert是宏,而不是函数。原型在assert.h头文件中,使用时需要#include 2. 原型:void assert (int expression); // 3. 作用:先计算表达式expression,如果其值为假(即为0),那么它先向标准错误流stderr打印一条出错信息,然后通过调用abort来终止程序运行;否则,assert()无任何作用。4. 建议:每转载 2013-11-24 18:32:24 · 770 阅读 · 0 评论 -
C++ 继承和派生
派生:派生类是基类的具体化,而基类是派生类的抽象派生类的定义:class 派生类名: [继承方式] 基类名{ 派生类新增加的成员 };派生类中声明一个与基类成员相同的成员或者成员函数,会覆盖对应基类的成员或者成员函数继承的方式:(1) 公共继承(public):公用基类成员在公用派生类中的访问属性(私有->不可访问;公用成员->公用;保护成员->保护原创 2013-11-26 21:08:18 · 919 阅读 · 0 评论 -
C++ 运算符重载
运算符重载的方法:函数类型 operator 运算符名词 (形参表列)如Complex operator + (Complex &c1) {... return c3;}c3 = c1 + c2; // c++系统解释为c1.operator+(c2),"operator +" 是Complex的一个成员函数运算符重载规则: (1) 只能对已有的C++运算符进行重原创 2013-11-26 14:26:18 · 622 阅读 · 0 评论 -
C++ 自定义数据类型:结构体,共用体,枚举
C++自定义数据类型1. 结构体 struct结构体的声明: struct 结构体名 {成员列表};结构体的初始化:Student student1 = {...}结构体变量的引用:student1.birthday.year = ..;结构体变量的调用:(1) 结构体变量.成员名;(2) (*p).成员名;(3) p->成员名2. 共用体 union共用体变量所占原创 2013-11-24 12:46:49 · 790 阅读 · 0 评论 -
C++ 输入输出流之标准I/O
1. C++输入输入输出包括:标准I/O:对系统指定的标准设备的输入和输出。比如键盘输入数据,输出到显示屏幕文件I/O:以外存磁盘文件为对象进行输入和输出。例如从磁盘文件输入数据,数据输出到磁盘文件。字符串I/O:对内存中指定的空间进行输入和输出。2. I/O类库中的常用流类 3. iostream类库的即可分别由不同的头文件来实现:iostream:包含原创 2013-12-01 11:59:26 · 1871 阅读 · 0 评论 -
C++ 输入输出流之字符串流
字符串流介绍字符串流以内存中用户定义的字符数组(字符串)作为输入输出对象。字符串流也有缓冲区,当缓冲区满了(或遇到换行符),流缓冲的数据一起存入字符数组。头文件strstream>1. 建立输出字符串流对象ostrestream的构造函数:ostrestream::ostrstream(char *buffer, int n, int mode = ios::out);原创 2013-12-02 17:38:55 · 4754 阅读 · 0 评论 -
C++ 命名空间
命名空间:由一个程序设计者命名的内存区域比如ns1::a,命名空间限定符+限定名字命名空间声明:namespace 命名空间名{ 变量,函数,结构体,类,模板,其他命名空间}无命名空间:作用范围在本文件namespace // 命名空间没有名字{ ...... }命名空间的使用方法using namespace name 使用整个命名空间。using转载 2013-12-04 20:07:54 · 723 阅读 · 0 评论 -
C++ 字符 字符数组 字符串函数
1. 字符数组初始化char ch[] = {'C', 'h', 'i', 'n', 'a'};// 数据只占用5个char类型的空间char ch[] = "China";// 数据占用6个char类型的空间,末尾默认添加'\0'2. 不能用赋值语句将一个字符串常量或字符数组直接赋给另一个字符数组,如下面:str1[ ]= “China”; (赋值原创 2013-11-21 22:17:46 · 1872 阅读 · 0 评论