(完整版)C++学习笔记

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

endl换行符,也是std成员函数

4).io流运算

cout控制台输出—屏幕上终端窗口,带缓冲<<插入运算符

cin控制台输入—键盘>>提取运算符

5).名字空间

Std:标准c++库所提供一切函数、对象、类型都隶属于std名字空间。

::-作用域限定符---名字空间“的”某个对象。

+= -=

名字冲突:看作用域。同一作用域不可使用相同名字。----解决方法:成员前加名字空间名,中间::

3.名字空间

namespace 名字空间名{

名字空间成员1;

名字空间成员2;//名字空间成员可以是变量、函数、类型

}

名字空间名::名字空间成员1

名字空间合并:同一个名字空间可以分别书写在不同的namespace子句中,只要它们的名字相同,仍然会被编译器识别为同一个名字空间。

Namespace名字空间名{

名字空间成员1;

}

namespace名字空间名{

名字空间成员2;

}

名字空间成员的声明和定义可以分开写,但是定义部分需要借助作用域限定符“::”指明所定义的成员隶属于哪个名字空间。

名字空间指令:using namespace名字空间名;

名字空间指令以后的代码,对名字空间中的所有成员可见,可以直接引用,无需作用域限定符。使用时要注意不要引入新的名字冲突。

名字空间声明:using名字空间名::名字空间成员;

名字空间声明用于将名字空间中的特定标识符引入当前作用域,可以省略作用域限定符,直接引用之。使用时注意不要因此引入新的名字冲突。

无名名字空间:不隶属于任何名字空间的标识符,编译器就将其缺省地放入无名名字空间。对于无名名字空间中的成员,可以直接使用“::”进行访问。

名字空间允许多层嵌套,访问时需要逐层分解。可利用名字空间别名简化名字空间嵌套路径的书写形式。

Using只能看里面一层。

4.结构、联合和枚举

1)所有的类型

关键字在声明变量时都可以省略。

struct Date{ //Date结构名

int year; //成员变量(成员表列)(类型说明符成员名)

int month;

int day;

void show(void)//成员函数

{

}

};

Int main(void){ //全局变量

Date d = {2016,8,2},*e = &d;//e是指向d的指针

d.show(); //“.”直接成员访问运算符

e->show (); //“->”间接成员访问运算符

return 0;

}

struct Date d = {2016,8,2};//C/C++

Date d = {2016,8,2};//C++ //类型关键字省略

2)C++中结构体可以包含函数(一个int四个字节,函数不放变量中,放代码区)

成员函数的调用,前面要写“.”“->”

定义结构体时不能同时初始化!

3)C++中增加了匿名联合。借用了联合语法形式,定义变量的内存布局。

4)C++中枚举是一种整型的数据类型,其取值范围也是类型的一部分,因此在和整型进行类型转换时会受到约束。

5.字符串

子面值:“Hello,World!”

字符指针:“char const* p = 字符串”;

字符数组:char ca[] = “字符串“;

string对象:string s = “字符串“;

简单、安全、一致。

栈是一种数据结构。栈可以用来存放一组数字,这些数字按照时间先后被放到栈里,从栈里获得数字的时候一定是最后一个放进去的数字,这个规则叫做后进先出。实现栈的时候使用push函数向里面放数字,使用pop函数从栈里获得数字。实现栈的时候最前面数字所在存储区位置固定,最后面数字所在存储区位置不断变化。

字符串比较函数strcmp(const char[ ],const char[ ]);

如果str1等于str2,函数值为0;

大于,正整数;

小于,负整数。

c.size:字符串长度

sizeof(c):求c这个字符串的字节大小(跟字符串长度无关)——string里存的是字符串地址。所占内存为动态内存,在堆空间里。

#include //C++的string类型

#include //和下面的等价,标准C语言的字符串函数:strcpy/strcat

#include //

6.布尔类型:bool

逻辑值:真和假

True/false

1/0

任何类型都可以隐式转换为布尔类型,(bool b;b = 1234;)其转换规则就是只要源类型数据的值为0就是假(false),否则就是真(true)。

在C++中关系表达式和逻辑表达式的值的类型是bool而不是int

7.操作符别名(unimportant)

8.重载

1)同一个作用域中,函数名相同,参数表不同的函数,构成重载关系。

2)在调用具有重载关系的函数时,编译器会根据所提供的实参表,选择与之相适应的重载版本,这个过程叫做重载解析。

void foo(void);

void foo(int n);

void foo(int* p);

char const* foo(int n,double d);

char const* foo(double d,int n);

char const* foo(double x,int y);//非法,参数名与重载无关

int foo(void);//非法,返回类型与重载无关【调用时重载解析】

3)直接调用函数,编译器是在编译函数调用语句时进行重载解析。通过函数指针调用函数,编译器是在编译对函数指针初始化或赋值的语句时进行重载解析。

4)只有同一作用域中的同名函数才涉及重载问题,不同作用域中的同名函数遵循名字隐藏原则。同时,需要注意名字空间指令和名字空间声明对可见性以及作用域的影响。

相关文档
最新文档