C++Primer学习笔记
2019年3月21日
第一篇 C++概述
1.语言的基本元素:内置数据、变量、表达式、语句及函数。
2.程序有两方面组成:(1)算法的集合。(2)数据的集合。
3.C++是一种支持多种程序设计方法的语言,主要把它当做面向对象的语言,但是它也能够支持面向过程和基于对象的程序设计方法的支持。
1开始
1.1问题的解决
解决问题的策略:分而治之(divide and conquer)和逐步求精(stepwise refinement)。将数据进行有序的进行处理就是算法,把算法转换成一种特定的程序设计语言----在这里就是C++语言。
1.2 C++程序
1.函数有四部分组成:返回类型,函数名,参数列表,以及函数体。前三部分合称为函数原型(function prototype)。
2.适当利用哑函数,循次渐进的方式来生成程序的方法,为了控制程序设计中不可不免的错误提供了一种有效的控制的手段。
1.3预处理指示符
Eg:#include<iostream>
#include<string>
如果是头文件如下:
#ifndef BOOKSTORE_H
#define BOOKSTORE_H
/******Bookstore.h的内容*********/
#endif
或者是可以用一行代替: #pragma once
#include<iostream>
using namespace std;
int main()
{
int element_count = 0;
if (element_count == 0)
{
cerr << "Error:" << __FILE__ << endl
<< ":line" << __LINE__ << endl
<< "element_count musts be non-zero.\n"<<endl;
}
system("pause");
return 0;
}
__LINE__包含正在被编译的文件的名字,__FILE__记录文件已经被编译的行数。__TIME__时间和__DATA__日期
assert();//是通用的预处理宏
2.1内置数组数据类型
float fval = 3.14159;//单精度浮点对象
double dval = 3.14159;//双精度浮点对象
c++中的数组虽然是从C语言中继承过来的,但是它反映了数据与对其进行操作的算法的分离,而这正是过程化程序设计的特征。
2.2动态内存分配和指针
C++中对象可以静态分配也可以动态分配-即程序执行时调用运行时刻库函数的分配。
静态与动态内存分配的主要区别:
- 静态对象是有名字的变量,我们直接对其进行操作,而动态对象是没有哦名字的变量,我们通过指针简介的对其进行操作。
- 静态对象的分配与释放由编译器自动处理。相反,动态对象的分配与释放必须由程序员显式的管理。
2.3基于对象的设计
公有成员提供了该类的公有接口-即实现了这个类的行为操作集合。它包括该类的所有成员函数,私有成员提供私有实现代码-即存储信息的数据。这种 “类的公共接口与私有实现代码的分离”,被称为信息隐藏(information hiding)。有两个好处:
- 如果类的私有实现代码需要修改或扩展,那么只有相对很小一部分“要求访问这些实现代码的成员函数”需要修改。
- 如果累的私有实现代码有错误,那么通常需要检查的代码数量只局限在相对较少的需要访问这些实现代码的成员函数上,而无需检查整个程序。
内联函数(inline function)机制。在它的调用上被展开,一般来说,内联函数不会引入任何函数的调用。
C++重载机制,构造函数的重载中,不能有返回值,根据参数列表中类型不同或个数不同来区分是否重载,但是函数名必须相同,常量与普通变量也可以构成重载。C++提供函数重载机制,故必须为程序中每个函数都提供一个独一无二的名字。同时c++还支持操作符的重载,这样就可以为特点的类定义新的操作符实例。
未完待续