C++ Primer 学习笔记(1)

出于对自己未来的规划和兴趣,一直想学一门编程语言,最终选择了C++这难啃的骨头。

本人13届毕业生,大学所学与计算机可以说毫无关系,所以基础基本为零;工作也和编程无关,不靠它换饭吃;学C++更多出于“未来可能有大用”的想法、自己些许的兴趣和一点点“懂编程应该很厉害的样子”的虚荣心。

刚申请博客时就计划学习《C++ Primer 中文版》第四版,由于公司培训计划最终耽搁下来。现在正式开始,希望没有太迟。

(PS:本人为菜鸟,写博纯粹为了自己更好学习编程;以上絮絮叨叨,以后更加絮絮叨叨,有怪莫怪)

第一章:快速入门

1.1 简单程序

int main()
{
 return 0;
}

main函数是C++程序入口,由此引出函数定义的4个元素:返回类型、函数名、形参表(可能为空)和函数体。

1.2 输入输出

C++输入输出功能由标准库提供,iostream库;iostream库基础为istream(输入)和ostream(输出)。

标准库定义了4个对象:cin, cout,cerr,clog。

cin:istream对象,标准输入,处理输入;cout:ostream对象,标准输出,处理输出;cerr:ostream对象,标准错误,输出警告和错误信息给程序使用者;clog:ostream对象,产生程序执行信息。

#include <iostream>
int main()
{
 std::cout
<<"enter two number:"<<  std::endl;
 int
v1,v2;
 std::cin >>v1>>v2;
 std::cout<< "the
sun
of"<<v1<<"and"<<v2
  <<"is"<<v1+v2<<std::endl
;
 return 0;
}

1.3 注释

两种注释:“/* */”,“//”。

1.4 控制结构

本节内容为本章难点。

单纯顺序执行不足,所以提供更多控制结构以支持更为复杂的执行路径,包括:while语句,for语句,if语句。

1)while语句(迭代执行)

#include <iostream>
int main()
{
 int sum =0,val
=1;
 while (val <=10){
  sum += val;
  ++
val;
 }
 std::cout << "sum of 1 to 10 inclusive
is"
  <<sum<<std::endl ;
 return 0;
}

本程序重要部分为while语句部分,while结构形式:while (condition) while_body_statement;

while 通过测试条件condition和执行while_body_statement来实现迭代,直到条件为假。

while循环中通过val控制循环执行次数,每次执行首先测试val的值,然后前自增val。

2)for语句

#include <iostream>
int main()
{
 int sum
=0;
 for (int val=1;val <=10;++val)
  sum
+=val;
 std::cout <<"sum of 1 to 10 inclusive
is"
  <<sum<<std::endl ;
 return 0;
}

for语句由for语句头和语句体构成,语句头包括:一个初始化,一个条件,一个表达式。

初始化仅在进入for语句时执行一次;每次执行语句体前,要进行条件判断,满足后执行,否则跳出;执行完语句体后,才执行表达式,然后重新进行条件判断,如此循环。

3)if语句

无论while或者for语句都需要判断下限小于上限,由if语句提供判断。

#include <iostream>
int main()
{
 std::cout <<
"enter two numbers:"<<std::endl ;
 int v1,v2;
 std::cin
>>v1>>v2;
 int lower,upper;
 if
(v1<=v2){
  lower =v1;
  upper =v2;
 } else
{
  lower =v2;
  upper =v1;
 }
 int
sum=0;
 for (int val =lower;val<=upper;++val)
  sum
+=val;
 std::cout <<"sum
of"<<lower
  <<"to"<<upper<<"inclusive
is"
  <<sum<<std::endl ;
 return 0;
}

4)读入未知数目的输入

比如求和,事先不知道对多少个数求和,一直到程序输入结束。

#include <iostream>
int main()
{
 int sum
=0,value;
 while (std::cin >>value)
  sum +=
value;
 std::cout <<"sum is:"<<sum<<std::endl
;
 return 0;
}

关键语句时while语句的判断条件std::cin >>value,以输入的有效无效作为判断。

以上为第一章第四节的主要学习内容,难点,但不要求太高,作为一次熟悉进行学习。

1.5 类

C++中通过类来定义数据结构。使用类时,我们需要知道的是,该类提供什么操作。

假定定义一个类sales_item,sales_item可以定义类对象item(sales_item
item),类对象相加(+),读取类对象(cin>>),输出类对象(cout<<),对象赋值(=),调用函数等。

C++ Primer 学习笔记(1),布布扣,bubuko.com

时间: 2024-08-07 04:33:16

C++ Primer 学习笔记(1)的相关文章

C++ Primer 学习笔记_98_特殊工具与技术 --优化内存分配

特殊工具与技术 --优化内存分配 引言: C++的内存分配是一种类型化操作:new为特定类型分配内存,并在新分配的内存中构造该类型的一个对象.new表达式自动运行合适的构造函数来初始化每个动态分配的类类型对象. new基于每个对象分配内存的事实可能会对某些类强加不可接受的运行时开销,这样的类可能需要使用用户级的类类型对象分配能够更快一些.这样的类使用的通用策略是,预先分配用于创建新对象的内存,需要时在预先分配的内存中构造每个新对象. 另外一些类希望按最小尺寸为自己的数据成员分配需要的内存.例如,

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

C++ Primer 学习笔记_74_面向对象编程 --再谈文本查询示例[续/习题]

面向对象编程 --再谈文本查询示例[续/习题] //P522 习题15.41 //1 in TextQuery.h #ifndef TEXTQUERY_H_INCLUDED #define TEXTQUERY_H_INCLUDED #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> #include <map&g

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员)、拷贝构造函数

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员).拷贝构造函数  从概念上将,可以认为构造函数分为两个阶段执行: 1)初始化阶段: 2)普通的计算阶段.计算阶段由构造函数函数体中的所有语句组成. 一.构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 1.对象成员及其初始化 <span style="font-size:14px;">#include <iostream> using namespace std;

C++ Primer 学习笔记_14_标准模板库_bitset位集合容器

C++ Primer 学习笔记_14_标准模板库_bitset位集合容器 bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值为0或1,因而很节省内存空间.下图是一个bitset的存储示意图,它的10个元素只使用了两个字节的空间. 使用bitset需要声明头文件"#include <bitset>" 1.创建bitset对象 创建bitset对象时,必须要指定容器的大小.bitset对象的大小一经定义,就不能修改了.下面这条语句就定义了bitset对

C++ Primer 学习笔记_23_标准模板库_stack.

C++ Primer 学习笔记_11_标准模板库_stack.queue队列容器与priority_queue优先队列容器 1.stack堆栈 stack堆栈是一个后进先出(Last In First Out,LIFO)的线性表,插入和删除元素都只能在表的一端进行.插入元素的一端称为栈顶,而另一端称为栈底.插入元素叫入栈(Push),删除元素叫出栈(Pop).下图是堆栈示意图 堆栈只提供入栈,出栈,栈顶元素访问和判断是否为空等几种方法.采用push()方法将元素入栈:采用pop()方法出栈:采用

C++primer学习笔记(二)——Chapter 4

4.1  Fundamentals 1.Basic Concepts (1)操作符分为一元,二元或者三元操作符: (2)复杂的表达式中含有很多操作符时: 规则一:分为不同的级别,级别高的先运行: 规则二:相同级别的操作符有执行顺序的确定: (3)操作符可以改变操作数的类型 一般将级别低的转化成级别高的 (4)重载运算符 相同的运算符在对不同类型的对象进行操作的时候,会有不同的功能: (5)Lvalue和Rvalue 显而易见:Lvalue指的是Left value,Rvalue指的是Right

C++ Primer 学习笔记_104_特殊工具与技术 --嵌套类

特殊工具与技术 --嵌套类 可以在另一个类内部(与后面所讲述的局部类不同,嵌套类是在类内部)定义一个类,这样的类是嵌套类,也称为嵌套类型.嵌套类最常用于定义执行类. 嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的.嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员. 嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义外围类的作用域中不可见.嵌套类的名字将不会与另一作用域中声明的名字冲突 嵌套类可以具有与非嵌套类相同

C++ Primer 学习笔记_102_特殊工具与技术 --运行时类型识别[续]

特殊工具与技术 --运行时类型识别[续] 三.RTTI的使用 当比较两个派生类对象的时候,我们希望比较可能特定于派生类的数据成员.如果形参是基类引用,就只能比较基类中出现的成员,我们不能访问在派生类中但不在基类中出现的成员. 因此我们可以使用RTTI,在试图比较不同类型的对象时返回假(false). 我们将定义单个相等操作符.每个类定义一个虚函数 equal,该函数首先将操作数强制转换为正确的类型.如果转换成功,就进行真正的比较:如果转换失败,equal 操作就返回 false. 1.类层次 c

C++ Primer 学习笔记_77_模板与泛型编程 --实例化

模板与泛型编程 --实例化 引言: 模板是一个蓝图,它本身不是类或函数.编译器使用模板产生指定的类或函数的特定版本号.产生模板的特定类型实例的过程称为实例化. 模板在使用时将进行实例化,类模板在引用实际模板类型时实例化,函数模板在调用它或用它对函数指针进行初始化或赋值时实例化. 1.类的实例化 当编写Queue<int>qi时,编译器自己主动创建名为Queue<int>的类.实际上,编译器通过又一次编写Queue模板,用类型int取代模板形參的每次出现而创建Queue<int