1.< >表示包含那些由系统提供的并放在指定子目录中的头文件,对于自己编写的头文件放在当前目录或其他目录下则用双引号” ”;

2.复合类型的声明:

int* p1,p2;//p1是指向int的指针,p2是int
/*#define和typedef的区别*/
#define TT int*
typedef int* YY;
TT P1,P2;//p1是指向int的指针,p2是int
YY P1,P2;//p1,P2都是指向int的指针

3.decltype类型指示符:如果decltype使用的表达式是一个变量,则decltype返回该变量的类型(包括顶层const和引用在内);decltype(s.size()) p=0;//p的类型和s.size的返回类型一样即string::size_type(  从逻辑上来讲,size() 成员函数似乎应该返回整形数值,或是无符号整数。但事实上,size 操作返回的是 string::size_type 类型的值。

string 类类型和许多其他库类型都定义了一些配套类型(companion type)。通过这些配套类型,库类型的使用就能与机器无关(machine-independent)。size_type 就是这些配套类型中的一种。它定义为与 unsigned 型(unsigned int 或 unsigned long)具有相同的含义,而且可以保证足够大能够存储任意 string 对象的长度。为了使用由 string 类型定义的 size_type 类型是由 string 类定义。任何存储string的size操作结果的变量必须为string::size_type 类型。特别重要的是,不要把size的返回值赋给一个 int 变量。
   虽然我们不知道 string::size_type 的确切类型,但可以知道它是 unsigned 型。对于任意一种给定的数据类型,它的 unsigned 型所能表示的最大正数值比对应的 signed 型要大一倍。这个事实表明 size_type 存储的 string 长度是 int 所能存储的两倍。 
   使用 int 变量的另一个问题是,有些机器上 int 变量的表示范围太小,甚至无法存储实际并不长的 string 对象。如在有 16 位 int 型的机器上,int 类型变量最大只能表示 32767 个字符的 string 对象。而能容纳一个文件内容的 string 对象轻易就会超过这个数字。因此,为了避免溢出,保存一个 stirng 对象 size 的最安全的方法就是使用标准库类型 string::size_type。)

4.const:定义变量时给初始值,不能修改,只读形式;默认状态下,const对象仅在文件内有效,//对于const变量不管是声明还是定义都添加extern关键字,这样只需定义一次就可以了://extern const int bufSize=8;//该常量能被其他文件访问。

l  auto:编译器通过初始值自动推断变量的类型

n  例如:auto val = val1 + val2;

如果val1+val2是int类型,则val是int类型;

如果val1+val2是double类型,则val是double类型。

5.类和对象:

 /* class类名称
{
public:
公有成员(外部接口)
private:
私有成员
protected:
保护型成员
};
从类外访问成员使用“对象名.成员名”方式访问public成员*/

6.重载函数的主要好处:{功能类似的多个函数用同一个名字;

要求:参数的类型不同/参数的个数不同/参数的类型和个数都不同}

7.构造函数:”=default”;默认构造函数

8.class和struct关键字都可以定义类,区别在于默认访问权限不一样。如果使用struct关键字,则定义在第一个访问说明符之前的成员是public的;相反使用class关键字,则这些成员是private的。//例:

class Word
{
float mass;//private by default
char name[];//private by default
Public:
void tee(void);
};

9.update()成员函数的函数头如下:

void Stock ::update(double price)

这种表示法意味着我们定义的update( )函数是Stock类的成员。这不仅将update( )标识为成员函数,还意味着我们可以将另一个类的成员函数也命名为update()。

10.:面向行的输入cin.getline(name,20);//使用getline将姓名读入到一个包含20个元素的name数组中,换行符结束,不包含换行符。

Cin.get();//包含换行符。

将两个类成员函数拼接起来:下面的语句将把输入中的连续两行分别读入到数组name1,name2中,其效果与两次调用cin.getline()相同:

cin.getline(name1,20).getline(name2,20);//cin.getline()返回一个cin对象

11.vector<string> v8{10,”hi”};//v8有10个值为hi的元素

(因为要想列表初始化vector对象,花括号里的值必须与元素类型相同,显然不能用int初始化string对象,所以v7和v8提供的值不能作为元素的初始值。确认无法执行列表初始化后,编译器会尝试用默认值初始化vector对象)

12.要想理解数组声明的含义,最好的办法是从数组的名字开始从右向左,有括号先读括号里的。

13.size_t类型:是一种机器无关的无符号类型,它被设计的足够大以便能表示内存中任意对象的大小。在cstddef头文件中定义了size_t类型,这个文件是c标准库stddef.h头文件的c++版本。在使用数组下标的时候,通常将其定义为size_t类型。

14.在一条语句中混合解引用和递增运算符:

 auto pbeg=v.begin();

 while(pbeg!=v.end()&& *beg>=)

    cout<<*pbeg++<<endl;//输出当前值并将pbeg向前移动一个元素,比cout<<*iter<<endl;\ ++iter;更简洁

15.确定一个流对象的状态的最简单的方法是将它当作一个条件来使用:

while(cin>>word) //while循环检查>>表达式返回的流的状态。如果输入操作成功,流保持有效状态,则条件为真。                  

16.关于枚举:enum spectrum{red,orange,yellow,green,blue};//spectrum成为新类型的名称:spectrum被称为枚举,就像struct变量被称为结构一样。

 #include <iostream>
enum spectrum{red,orange,yellow,green,blue};
spectrum band;
band=blue;//正确
band=;//错误,spectrum变量受到限制只能有5个可能值
/*对于枚举,只定义了赋值运算符,没有定义算数运算符*/
band=green;//正确
++band;//错误
band=orange+green;//错误
/*枚举量是证型,可被提升为int类型,但是int类型不能自动转换为枚举类型*/
int colour=blue;//正确
band=;//错误
colour=+green;//正确
band=orange+red;//错误,算数表达式中枚举将被转换为整数,因此表达式orange+red将被转换为1+0.这是个合法的表达式,但其类型为int,不能将其赋给类型为spectrum的变量band

17.用const保护数组:

 /*接受数组名的函数将使用原始数据,可以对其进行修改*/
void show_arry(double ar[],int n){}
/*为防止函数修改数组的内容,可在声明形参时使用关键字const*/
void show_arry(const double ar[],int n){}

18.

  /*如果数据类型本身并不是指针,则可以将const数据或非const数据的地址赋给指向const的指针,但只能将非const数据的地址赋给非const指针*/
int age=;
const int *pt=&age;/*可以直接通过age变量来修改age的值,但不能用pt指针来修改它;能防止修改pt指向的值,但是不能防止修改pt的值,也就是说可以将一个新地址赋给pt:
int sage=89;
pt=&sage;正确,但仍不能使用pt来修改它指向的值(现在为89)*/
const int ouu=;
int *pm=&ouu;//错误
void dd(int*){}
dd(ouu);//错误
/*尽可能使用const(除非要修改数据)
理由:1.这样可以避免由于无意间修改数据而导致的编程错误
2.使用const使得函数能够处理const和非const实参,否则将只能接受非const数据。*/
/*还有一种使用const的方式使得无法修改指针的值*/
int sll=;
int *const pp=&sll;//pp只能指向sll,但允许使用pp来修改sll的值,同样,如果是const int sll=3;则不能赋值给pp

19.构造函数可以对其参数列表中的元素直接赋值,但是在创建对象时可以通过重新传实参来覆盖它原来的值:

 class Time
{
Time(int h,int m=);//构造函数
......
}
Time coding(,);//创建一个类对象,40覆盖0;

C++语言学习的更多相关文章

  1. C语言学习 第八次作业总结

    本次作业其实没有新的内容,主要就是复习上一次的一维数组的相关内容.冯老师布置了5道题目,其中涉及到一些比较简单的排序或者是查找的方法.因为数据很少,所以直接使用for循环遍历就可以了. 关于本次作业, ...

  2. C语言学习 第七次作业总结

    C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...

  3. 技能收获与C语言学习

    你有什么技能比大多人(超过90%以上)更好? 我会的东西很多,喜欢的东西太多,但是很遗憾广而不专,会而不精.学了很多东西我都是为了娱乐,因为以前我们那里过于强调学习,很多爱好也都被扼杀在摇篮里.我觉得 ...

  4. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  5. go语言学习笔记

    Go语言学习基本类型Bool 取值范围:true,false (不可以用数字代替)Int/uint 根据平台可能为32或64位int8/uint8 长度:1字节 取值范围-128~127/0~255b ...

  6. 20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标

    自己较强的技能获取经验. 1:实话实说我自己是没有哪个技能可以超过90%的人的,只有自认为做的还可以的一些事情,例如打篮球,office软件的应用,一百米跑.至于其他方面就是很平庸了. 2:经验主要有 ...

  7. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  8. 20155229-付钰涵-分析自我技能延展到c语言学习状况

    我的小技能 我记得幼儿园时表演的舞蹈,也记得从水彩到素描的学习,还记得小学和初中获得的钢琴省级奖项. 舞蹈止于一年级,绘画止于三年级,钢琴从学前班到高一那十年的时间里有过断续. 03年-04年的那个冬 ...

  9. linux 下C语言学习路线

    UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...

  10. [go语言学习指南]

    内部分享,根据自己的经验,收集汇总的go语言学习指南. 适合新手入门. 可以通过这里进行下载.

随机推荐

  1. Python中字符串/字典/json之间的转换

    import json #定义一个字典d1,字典是无序的 d1 = { "a": None, "b": False, "c": True, ...

  2. [持续交付实践] pipeline使用:语法详解

    一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直 ...

  3. show出相应单据列表

    var Fids=AddGroupItems.Select(o=>Convert.ToString(o["Id"])).ToArray(); string filter=st ...

  4. mongodb mongod 启动参数

    我们可以通过mongod --help查看mongod的所有参数说明,以下是各参数的中文解释. 基本配置 –quiet# 安静输出 –port arg# 指定服务端口号,默认端口27017 –bind ...

  5. js 冒泡事件 点击任意地方隐藏元素

    $(function () { $("#but").click(function (e) {// $();//显示速度 /*阻止冒泡事件*/ e = window.event || ...

  6. OkHttp 同步异步操作

    OkHttp是一个Java和Android的HTTP和HTTP/2的客户端,负责发送HTTP请求以及接受HTTP响应. 一.使用OkHttp OkHttp发送请求后,可以通过同步或异步地方式获取响应. ...

  7. Windows 10同步时间的方法

    今天在安装了Windows 10 1809(October 2018 update)之后发现时间不能同步,以前并没有出现这种情况. 1) 打开控制面板,找到时钟域地区 2) 选择日期和时间 3) 选择 ...

  8. 322. Coin Change选取最少的硬币凑整-背包问题变形

    [抄题]: You are given coins of different denominations and a total amount of money amount. Write a fun ...

  9. eclipse中将一个项目作为library导入另一个项目中

    1. github上搜索viewpagerIndicator: https://github.com/JakeWharton/ViewPagerIndicator2. 下载zip包,解压,eclips ...

  10. highcharts echarts比较

    1,highcharts底层是svg echarts底层是canvas 2,svg和canvas的区别 canvas 依赖分辨率 不支持事件处理器 弱的文本渲染能力 能够以 .png 或 .jpg 格 ...