记得大二的时候就看过C++Primer,但是当时由于目标不明确想法太多,没能一直看完,加上现在很多时候觉得自己基础实在不扎实,所以说好好地从头学习一下应该是有必要的,这个过程中也尝试写一点记录。

C++Primer的第一章是快速入门,主要就随便介绍了一下C++的基本的东西


1.初窥输入输出

C++并没有直接定义进行输入输出的任何语句,这种功能由标准库提供(iostream库)。定义了四个IO对象:cin、cout、cerr、clog

  1. #include<iostream> 
  2.  
  3. using namespace std; 
  4. int main() 
  5.     int var1, var2, sum; 
  6.     cout << "input var1 and var2" << endl; 
  7.     cin >> var1 >> var2; 
  8.     sum = var1+var2; 
  9.     cout << "the sum is:" << sum << endl; 
  10. return 0;


注意这里输出操作返回的是输出流本身

endl是一个特殊值,叫做操纵符(manipulator),把它写入输出流就会具有输出换行的作用,并刷新与设备关联的buffer

读入未知数目的输入:

  1. #include<iostream>  
  2.   
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     int var, sum;  
  7.     while (cin >> var) 
  8.         sum += var; 
  9.     cout << sum << endl; 
  10.     return 0; 
  11. }  


这里我们可以看出,每次输入一个空格,cin就读取下一个值,输入完后enter,cin结束。但是如果你要求cin两个值,现在输入一个之后enter,将会继续读取下一个值

如果你在输入的过程中输入了更多的值以至于当前的cin没有全部读到变量中,但是仍然读入到输入流,你在下次cin的时候就会获取上次没有赋给变量的那个值


2.类的简介

C++通过定义类来定义自己的数据结构

Sales_item item说明item是类型Sales_item的一个对象(对象是指内存中具有类型的区域)

 

3.变量和基本类型

初始化的两种类型:复制初始化和直接初始化

 

  1. int var(1024);  //direct-initialization 
  2. int var = 1024; //copy-initialization 
对类类型的对象来说,有些初始化仅能用直接初始化完成。

 

变量初始化规则:
1.内置类型变量的初始化

       在函数体外定义的变量初始化成0 

       在函数体内定义的变量不初始化

2.类类型变量的初始化

       每个类都通过构造函数定义了该类型的对象如何进行初始化,但是如果我们定义某个类的变量时没有提供初始化式,这个类也可以定义初始化时的操作。通过默认构造函数来实现。


声明和定义

变量的声名用于向程序表明变量的类型和名字

变量的定义用于为变量分配存储空间,也可以同时指定初始值


extern声名不是定义,不分配存储空间


引用

  1. int ival = 1024; 
  2. int &refval = ival; 


​对refval操作就是对ival操作,引用只是对象的另外一个名字。

const引用是指向const对象的引用

 

  1. const int ival = 1024; 
  2. const int &refval = ival; 
  3. int &refval2 = ival; //error 

这样的话可以读取refval但是不能修改refval

 

注解:非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值


C++支持struct关键字,如果使用class定义类,定义在第一个访问标号前的任何成员都隐式指定为private,struct则都是public。