![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++语法基础总结笔记
文章平均质量分 76
learn123_net
http://learn123.net There are lots of products in the market that make you dazzled and you dont know how to make a choice. In here we introduce the latest fashion and popular treands. Therefore you learn it first,and then buy the goods that you bes
展开
-
C++语法基础--ostream,cout及其格式控制,缓冲区
1.C++程序把输入和输出看作字节流:输入时,程序从输入流中抽取字节;输出是,程序将字节插入到输出流中。流充当了程序和流源或流目标之间的桥梁。2.缓冲区是用作中介的内存块,它将信息从设备传输到程序或从程序传输给设备的临时存储工具。3.在程序中包含iostream文件将自动创建8个流对象(4个窄字符流,4个宽字符流) cin对象对应于标准输入流 wcin与cin类似,但处理的原创 2013-08-08 22:44:50 · 4637 阅读 · 0 评论 -
C++语法基础--恢复继承成员的访问级别,默认继承保护级别,友元关系与继承,继承与静态成员
1.恢复继承成员的访问级别(using 声明) *派生类可以恢复继承成员的访问级别,但是不能使访问级别比基类中原来指定的更严格或更宽松 Example: class base { public: int x; }; class private_derived:private base { pub原创 2013-07-20 19:43:55 · 803 阅读 · 0 评论 -
C++语法基础--public,protected,private的继承方式及其访问性
*派生类所继承的成员的访问由基类中的成员访问级别和派生列表中使用的访问标号共同控制 *派生类可以进一步限制,但不能放松对所继承的成员的访问 *基类本身指定对自身成员的最小访问控制1.基类成员为private *只有基类和基类的友元可以访问该成员,派生类不能直接访问基类的private成员2.基类成员为public或protected原创 2013-07-20 18:05:59 · 867 阅读 · 0 评论 -
C++语法基础--标准IO库--文件的输入和输出(fstream,ifstream,ofstream)
1.fstream *构造函数: default (1): fstream(); initialization (2): explicit fstream (const char* filename,ios_base::openmode mode = ios_base::in | ios_base::out);原创 2013-07-04 23:16:51 · 1195 阅读 · 0 评论 -
C++语法基础--重载运算操作符
操作符重载其实和函数没什区别,要记住的是: 重载运算操作符的参数列表比普通函数少一个。表达式中最左边的对象是调用操作符重载函数的对象,而最右边的那个将被作为参数传送。 形式为: 返回类型 operator 操作符 (参数列表){}下面给出一个仿C++string类的MyString类,该类重载了大部分常见的运算操作符。MyString.h原创 2013-07-02 21:43:38 · 928 阅读 · 0 评论 -
C++语法基础--泛型算法(generic algorithm)--transform
注:从本文开始,此系列的文章将会把字数控制在合理的范围内:一是怕字数太多吓坏读者,二是在一篇文章中涉及太多的内容很难把问题详解,而且也不利于日后再次整理笔记。/* * transform(#include)的原型如下: template OutputIterator transform( InputIterator _First1原创 2013-07-03 11:59:30 · 816 阅读 · 0 评论 -
C++语法基础--动态绑定,派生类,虚函数,覆盖虚函数机制
1.动态绑定: 通过基类的引用(或指针)调用虚函数时,发生动态绑定。 *继承层次的根类一般都要定义虚析构函数 *除构造函数外,任意非static成员函数都可以使虚函数 *保留字virtual只在类内部的成员函数声明中出现,不能用在类定义体外部出现的函数定义上 Example: class A { public: virt原创 2013-07-20 14:26:55 · 741 阅读 · 0 评论 -
C++语法基础01--类(class)
序言 难得放暑假,回顾大一这一年所学到的东西,总觉的太繁杂。于是,决定用一个暑假来总结c++,java,android,linux,数据结构,数据库.......... 1.类的声明与定义: class A { ..... }; 声明: class A; 定义: cl原创 2013-06-27 09:10:32 · 1082 阅读 · 0 评论 -
C++语法基础--标准IO库--输出缓冲管理
1.缓冲区被刷新的情况: *程序正常结束 *缓冲区已满 *用操作符显示第刷新缓冲区(ends,endl,unitbuf,flush.....) *当输出流与输入流关联(tie)时,在读入输入流时将刷新器关联输出缓冲区2.ends和endl的区别 ends:在缓冲区中插入空(null)字符 eg: cout//hello原创 2013-07-04 15:07:46 · 866 阅读 · 0 评论 -
C++语法基础--标准IO库--简单的标准IO库
1.IO标准库类型和头文件 2.简单的iostream继承层次 3.IO对象不可复制或赋值,如需传递或返回IO对象,则必须传递或返回指向该对象的指针或引用(必须为非const)。 eg: void f(ostream os) //error {os }4.IO标准库的条件状态原创 2013-07-04 13:24:56 · 624 阅读 · 0 评论 -
C++语法基础--派生类的构造函数,赋值操作符,析构函数,虚析构函数
1.如果派生类定义了自己的构造函数(复制构造函数)或赋值操作符,该构造函数(复制构造函数)或赋值操作符一般应显式使用基类构造函数(复制构造函数)或赋值操作符初始化基类部分、 Eample: class base { public: base() { } base(int i):x(i) { co原创 2013-07-21 16:38:18 · 802 阅读 · 0 评论 -
C++语法基础--标准库类型--string(1)
1.命名空间的using声明 作用: 提供一种更简洁的方式来使用命名空间成员,一旦用了using声明,就可以直接引用名字,而不需要引用该名字的命名空间 格式: using namespace::name; eg: #include using std::cout; int main(void)原创 2013-07-05 00:42:04 · 879 阅读 · 0 评论 -
C++语法基础--标准库类型--vector
1.头文件: #include2.vector不是一种数据类型,而只是一个模板。但vector,vector......则是数据类型 原型: template> class vector;3.常用构造函数 原型: default: explicit vector (const allo原创 2013-07-06 12:21:03 · 732 阅读 · 0 评论 -
C++语法基础--输出格式控制--setf(),标准控制符,iomanip中的格式控制
11.控制小数显示格式 fmtflags setf (fmtflags fmtfl); Set specific format flags sets the stream's format flags whose bits are set in fmtfl, leaving unchanged the rest 其中fmtflags是b原创 2013-08-09 07:44:56 · 4117 阅读 · 0 评论 -
C++语法基础--关联容器--set
1.set(#include) template class Compare = less, // set::key_compare/value_compare class Alloc = allocator > // set::allocator_type > class set *容器只是原创 2013-07-10 23:17:02 · 780 阅读 · 0 评论 -
C++语法基础--模板实参推断,模板类型形参的实参的受限转换,模板实参推断与函数指针
1.编写泛型程序 *模板代码总是要对将要使用的类型做一些假设,所以实例化的版本可能是非法的 Example: template//返回两个数的较大者T bigger(T v1,T v2){return v1>v2?v1:v2; //这里的模板假设元素具有比较性 } class A{} ;int main(){ A原创 2013-07-23 12:43:56 · 961 阅读 · 0 评论 -
C++语法基础--模板与泛型编程--函数模板,类模板,模板形参,非模板形参
1. 定义函数模板 *函数模板是一个独立于类型的函数,可作为一种方式,产生函数的特定类型版本 *使用函数模板时,编译器会推断哪个模板实参绑定到模板形参。 *一旦编译器确定了实际的模板实参,就称它实例化了函数模板的一个实例 Example: //比较两个数的大小,v1>v2是返回正数,v1 template T compare(const T原创 2013-07-23 09:27:43 · 1264 阅读 · 0 评论 -
C++语法基础--优先队列--priority_queue
*优先队列弹出数据是能够按照队列元素优先级的顺序进行,而不是按照他们进入队列的先后顺序 *元素进入优先队列时,没有任何限制*STL中的priority_queue(头文件#include)默认情况下假定最大的元素也具有最大的优先级 Example: int main(){ priority_queue pq; pq.push(5);原创 2013-07-29 16:27:53 · 628 阅读 · 0 评论 -
C++语法基础--句柄类
句柄类解决C++面向对象编程中不能使用对象支持面向对象编程(必须使用指针或引用才能获得动态绑定行为)的问题。准备知识1:可以简单地认为编译器首先扫描类定义(而不是类实现),知道这个类有什么函数、函数的原型是什么、有什么成员变量,成员变量的类型是什么。然后,编译器才会编译其实现,因此类成员函数总能直接访问任何成员变量和函数 Example: class A{publi原创 2013-07-22 18:24:31 · 1054 阅读 · 0 评论 -
C++语法基础--智能指针
1.智能指针准备知识:new关键字定义的指针,如果不用delete关键字删除,即使指针超出作用域范围,该指针也不会被删除Example:先给出一个在析构函数没有删除指针的类 class A { public: A(int *pt):p(pt) { } private: int *p; }; int main(原创 2013-07-22 09:41:32 · 774 阅读 · 0 评论 -
C++语法基础--标准库类型--bitset
1.bitset *定义原型: template class bitset; *构造函数 原型: bitset ( ); bitset ( unsigned long val ); template explicit bitset ( const basic原创 2013-07-06 14:13:55 · 717 阅读 · 0 评论 -
C++语法基础--标准库类型--string(2)
1.从标准输入读取string *忽略开头所有的空白字符(空格,换行符,制表符) *直至再次遇到空白符,读取终止 eg: string s; cin>>s; //假设输入" hello " cout //输出hello(注意,开头和结尾并没有空格)2.getline 原型: (1) istream原创 2013-07-05 16:45:17 · 593 阅读 · 0 评论 -
C++语法基础--标准IO库--字符串流
1.标准库定义的三中类型的字符串流(#include) istringstream,ostringstream,stringstream *stringstream: 构造函数: explicit stringstream (ios_base::openmode which = ios_base::in | ios_base::out);原创 2013-07-04 21:06:42 · 747 阅读 · 0 评论 -
C++语法基础--函数对象,函数对象的函数适配器(绑定器,求反器)
1.定义了调用操作符的类,其对象称为函数对象,即它们是行为类似函数的对象 Example: class abs{ public: int operator()(int i) { return i>=0?i:-i; } };int main(){ abs ob;原创 2013-07-20 07:57:28 · 902 阅读 · 0 评论 -
C++语法基础--转换操作符,重载确定
1.转换操作符 *将类类型值转变为其他类型值的转换。 *转换操作符在类定义体内声明,在保留字operator之后跟着转换的目标类型, operator type(); *转换函数必须是成员函数,不能指定返回类型(但必须显示返回一个指定类型的值),并且形参表必须为空 *只要存在转换,编译器将在可以使用内置转换的地方自动调用它。 Example: class My原创 2013-07-19 23:13:22 · 651 阅读 · 0 评论 -
C++语法基础--泛型算法(generic algorithm)--对容器排序的算法sort(),stable_sort(),unique()
1.sort Sorts the elements in the range [first,last) into ascending order. The elements are compared using operator Equivalent elements are not guaranteed to keep their original relative order原创 2013-07-12 11:12:59 · 1106 阅读 · 0 评论 -
C++语法基础--关联容器--multimap,multiset
1.multimap,multiset相应的头文件分别是map和set头文件 *multimap,multiset类型允许一个键对应多个实例 *multimap,multiset所支持的操作分别和map,set相同,但不支持下标操作符2.添加元素insert() *由于键不要求唯一的,因此每次调用insert总会添加一个元素3.删除元素erase() *带有原创 2013-07-11 08:08:41 · 618 阅读 · 0 评论 -
C++语法基础--关联容器--map(一)--constructor,operator[],insert
1关联容器类型 set和map类型的对象所包含的元素都具有不同的键,不允许为同一个键添加第二个元素2.map类型(#include) 原型: template, class Allocator = std::allocator >> class map; *ma原创 2013-07-09 13:49:41 · 924 阅读 · 0 评论 -
C++语法基础--关联容器--map(二)--查找并读取map中的元素count(),find()与 从map对象中删除元素erase()
1.查找并读取map中的元素count(),find() *对于map对象,count成员的返回值只能是0或1 原型: iterator find (const key_type& k); const_iterator find (const key_type& k) const size_type count (const key_type原创 2013-07-10 11:26:12 · 1200 阅读 · 0 评论 -
C++语法基础--pair简介
1.pair类型(#include *pair类型提供的操作 2.pair的创建和初始化 原型: default: pair(); copy : template pair (const pair& pr); initialization :原创 2013-07-09 10:04:58 · 1181 阅读 · 0 评论 -
C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack
1.标准库提供的三种顺序容器适配器: * queue,priority_queue,stack *相关的头文件为: #include #include 2.容器适配器的作用: 可以使一种已存在的容器类型采用令一种不同的抽象类型的工作方式实现。 eg: 假如一种电器只有两个插脚,但所有的插座都是三个孔的,这时,便需要原创 2013-07-09 08:54:34 · 744 阅读 · 0 评论 -
C++语法基础--顺序容器(三)--关系操作符,容器大小的操作,访问元素,删除元素,查找元素
1.关系操作符 *比较的容器必须具有相同的容器类型,而且其元素 类型也必须相同 *所有容器的都通过比较其元素对来实现关系元素: eg: 详见容器的比较第六第七条2.容器大小的操作 其中:max_size() 原型: size_type max_size() const; 返原创 2013-07-08 09:46:17 · 671 阅读 · 0 评论 -
C++语法基础--顺序容器(二)--容器常用操作,迭代器失效总结
注:关于迭代器失效部分的总结,仅代表个人看法,书上只是说插入和擦除操作可能会使迭代器失效,但具 体什么情况下会失效并没有作说明。此问题将留待日后研究STL(Standard Template Library)再解决1.迭代器的范围 *左闭合区间 eg: vector vec(10); 则迭代器的范围:原创 2013-07-07 14:43:40 · 676 阅读 · 0 评论 -
C++语法基础--顺序容器(四)--赋值和swap
赋值和swap *赋值=: 无论赋值前容器大小是否相同, 赋值后两个容器的大小相等 eg: list lst1;list lst2(5);lst1=lst2;coutcout *赋值assign: 原型: range : template原创 2013-07-08 10:32:58 · 750 阅读 · 0 评论 -
C++语法基础--泛型算法(generic algorithm)--只读算法accumulate(),find_first_of(),count(),count_if()
注:泛型算法实在太多,太繁杂,全都掌握也不现实,也没有必要。所以暂时只研究一些常用的算法。 1.只读算法 *accumulate(在numeric头文件中定义) Computes the sum of the given value init and the elements in the range [first, last). The first versi原创 2013-07-11 12:51:04 · 801 阅读 · 0 评论 -
C++语法基础--泛型算法(generic algorithm)--写入容器元素的算法fill(),fill_n,replace()
*fill Assigns val to all the elements in the range [first,last) 原型: template void fill (ForwardIterator first, ForwardIterator last, const T& val); 该算法等效于: template void fill (F原创 2013-07-12 04:33:48 · 621 阅读 · 0 评论 -
C++语法基础--泛型算法(generic algorithm)--find(),find_if()
1.使用泛型算法必须包含algorithm头文件2.大多数算法是通过遍历由两个迭代器标记的一段元素来实现其功能,典型情况下,算法在遍历一段元素范围时,操纵其中的每一个元素。3.find() 只要找到与给定值相等的元素,find就会返回指向该元素的迭代器 原型: template InputIterator find (InputIterator原创 2013-07-11 10:38:37 · 1063 阅读 · 0 评论 -
C++语法基础--重载operator->箭头操作符
格式: class B { public: operator->(); fn(); }; B b;//或者B *b; b->fn(); *如果b是某一类类型的指针,则这个语句使用内置成员访问操作符箭头的语义;如果b是某一个类类型的对像 或引用,则查找这个原创 2013-07-03 15:40:45 · 1405 阅读 · 0 评论 -
C++语法基础--复制控制--复制构造函数 ,赋值操作符 ,析构函数
复制控制(编译器自动实现这些操作) *复制构造函数 *赋值操作符 *析构函数 1.复制构造函数 *当定义一个新对象并用同一个类型的对象对它进行初始化式,将显式使用复制构造函数 *当将该类型的对象传递给函数或从函数返回该类型的对象是,将隐式使用复制构造函数 C原创 2013-07-16 15:55:00 · 602 阅读 · 0 评论 -
C++语法基础--类(class)--类型别名,this指针,初始化式,友元的一些注意细节
注:“一些注意细节”是相对于我自己来说的(闲着无事,把入门书关于类的章节看了一遍,发现这些内容以前还真没注意到)。类的简要回顾,在C++语法基础--类已经概况了。1.使用类型别名来简化类 Example: class A { public:typedef string::size_type MyType; private:MyType原创 2013-07-15 13:45:55 · 1461 阅读 · 0 评论