C++ Primer读书笔记(一)QuickStart

前言

	本文介绍C++的基础内容:类型、变量、表达式、语句、函数。

导入
书店保存有销售记录的档案,每条记录保存了某本书的一次销售记录,包含三个数据项:

ISBN编号 册数 单价
0-201-70353-X 4 24.99
0-314-15926-X 1 13.14

使用C++解决这个问题?

一、编写一个C++程序

1.1 编写一个简单的C++程序

int main()
{
	//啥也不干
	return 0;
}
  • 每个C++程序都包含一个或多个函数,其中一个必须命名为 main ;
  • 一个函数包含4个部分:
    1. 返回类型(return type);
    2. 函数名(function name);
    3. 参数列表(parameter list);
    4. 函数体(function body);

对应上面啥也不干的C++程序:int 为返回类型;main为函数名;( )为参数列表,此处为空;{ } 函数体。

另外,以花括号开始和结束的部分也称语句块,该语句块中只有一条语句return 0; 它是函数的结束,并且返回整数 0 这与返回值为int 类型对应。注意语句必须以分号 ; 结束。

1.1.1 编译、运行

上述啥也不干的程序在编辑器中编写完毕后,还需要编译器编译后才能运行,很多PC机上有集成开发环境(Integrated Developed Envirnment, IDE),它将各种工具包装在一起。程序文件名约定以 .cc .cpp .cxx .cp .C 等后缀结尾,程序文件通常称为源文件

使用命令行运行编译器
无论是否使用集成IDE,实质都是调用编译器编译程序,假定我们的程序文件名称为main.cpp,终端命令行形式为:CC main.cppCC为编译器,例如g++
在win系统中,默认生成main.exe.\main.exe可以运行;在UNIX/Linux中,默认生成a.out./a.out 可以运行;当然你什么也看不到,因为啥也没干。

1.2 初识输入、输出

C++语言包含了一个标准库iosteam,包含istreamostream分别代表输入输出流。一个流就是一个字符出序列,从IO设备读入或者写入到IO设备,术语“流”(stream)想要表达的是,随着时间的推移,字符是顺序生成和消耗。
标准输入和输出对象:

  • cin 标准输入,是istream 对象;
  • cout 标准输出,是ostream 对象;
  • cerr 标准错误,是ostream 对象;
  • clog 输出程序运行时的一般信息,ostream 对象;
#include <iostream>		// 引入头文件iostream
int main()
{
	std::cout << "Enter two number: " << std::endl;		// std 是命名空间		::是域运算符
	int v1 = 0, v2 = 0;			
	std::cin >> v1 >> v2;				// >>输入运算符		<<输出运算符
	std::cout << "The sum of" << v1 << "and" << v2 << "is" << v1 + v2 << std::endl;
	return 0;
}

1.3 注释(comments)

  • 单行注释 // 双斜杠右边的内容会被编译器忽略
  • 多行注释 /* XXX*/

例:

/*
* @function:
* @return:
*@parameter:
*/
void func(){;}

1.4 控制流

1.4.1 while 语句

反复执行一段代码,直到给定条件为假为止。

#include <iostream>
int main()
{
    int sum = 0;
    int val = 0;
    // while 语句
    while(val <= 10){
        sum += val;
        val ++;
    }
    std::cout << "The sum of 0 to 10 inclusive is: " << sum << "\n";
    return 0;
}
// return 55;

while 语句的形式:while (condition) {statement;}
也称为循环语句交替执行conditionstatement ,直到condition = false

1.4.2 for语句

for语句是另一种常用的循环语句

#include <iostream>

int main()
{
    int sum = 0;
    for(int i = 0; i <= 10; i ++){
        sum += i;
    }
    std::cout << "The sum of 0 to 10 inclusive is: " << sum << "\n";
    return 0;
}
// 55

forcondition 部分有三块,都是非必填的:

  • 初始化语句 int i = 0;
  • 循环条件 i <= 10;
  • 表达式 i ++

执行流程与while 基本一致

编译器会在形式上检查代码的合规性,通常有以下几类错误:

  1. 语法错误
  2. 类型错误
  3. 声明错误

实际编写程序时,应当边写边调,便于及时发现bug(漏洞)

1.4.3 if 语句

C++也支持循环语句

#include <iostream>
int main()
{
    int currVal = 0, val = 0;
    if(std::cin >> currVal){
        int cnt = 1;
        while(std::cin >> val){
            if(val == currVal){
                ++ cnt;
            }
            else {
                std::cout << currVal << " occurs "
                            << cnt << " times " << std::endl;
                currVal = val;
                cnt = 1;
            }
        }
        std::cout << currVal << " occurs "
                    << cnt << " times " << std::endl;
    }
    return 0;
}

C++的缩进与格式,关于这个的争议是永无休止的,我们选中一种风格,保持统一即可。

1.5 类简介

类(Class 将事物的属性和方法抽象出来的一种类型;一个类定义了一种类型,以及与其关联的一组操作。

1.5.1 Sale_item 类

我解决导入的书店销售问题,我们引入Sale_item类,考虑以下几个问题:

1)类名是什么? Sale_item
2)它在哪里定义? .h文件中
3)它支持哪些操作? 如下

Sale_item item; itemSale_item实例化的一个具体的对象,除此之外Sale_item类型还可以:

  • 调用一个名为isbn函数从Sale_item对象中获取一个书号;
  • 用输入运算符(>>)和输出运算符(<<)读、写Sale_item类型对象;
  • 用 = 号将一个Sale_item对象赋值给宁一个Sale_item对象;
  • 用 + 号将两个Sale_item对象相加,和为两个isbn号相同的的对象的销售册数和销售额的和;
  • 使用符合运算符(+=)将一个Sale_item对象加到宁一个对象上。

1.5.2 属性和方法

属性即类的成员变量,方法即类的成员函数。

1.6 书店程序

//Sale_item.h

#ifndef SALE_ITEM_H
#define SALE_ITEM_H

#include <iostream>
#include <istream>
#include <ostream>

class Sale_item
{
    public:
        Sale_item();
        Sale_item(const string isbn, unsigned int count, double price);
        virtual ~Sale_item();

        inline const string isbn(){return m_isbn;}

        friend istream &operator >> (istream &in, Sale_item &item);
        friend ostream &operator << (ostream &out, Sale_item &item);
        Sale_item &operator =  (Sale_item &item);
        friend Sale_item &operator +  (Sale_item &item1, Sale_item &item2);
        friend Sale_item &operator += (Sale_item &item1, const Sale_item &item2);

    protected:

    private:
        const string m_isbn;
        unsigned int m_count;
        unsigned double m_price;
};

#endif // SALE_ITEM_H

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值