学习C++面向对象开发需要具备一些基础。 学习过某种proceduural language(C语言最佳) 了解变量(variables)、类型(types)、作用域(scope)、循环(loops)、流程控制。 知道一个程序需要编译才能被执行。
以良好的方式编写C++class 是一种基于对象(Object Based) class without pointer members——Complex 带指针 class with pointer members——String 不带指针 学习Classes 之间的关系 是一种面向对象(Object Orienter) 继承(inheritance) 复合(composition) 委托(delegation)
将要获得的代码 complex.h、comple-test.cpp string.h、string-test.cpp oop-demo.h、oop-test.cpp
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。 C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。在C++ 语言之前有B语言(1969)和C语言(1972)。 C++ 是 C 的一个超集,事实上,任何合法的 C 程。 面向对象语言不是只有C++还有Java语言、C#语言等。
C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:
封装(Encapsulation):封装是将数据和方法组合在一起,对外部隐藏实现细节,只公开对外提供的接口。这样可以提高安全性、可靠性和灵活性。
继承(Inheritance):继承是从已有类中派生出新类,新类具有已有类的属性和方法,并且可以扩展或修改这些属性和方法。这样可以提高代码的复用性和可扩展性。
多态(Polymorphism):多态是指同一种操作作用于不同的对象,可以有不同的解释和实现。它可以通过接口或继承实现,可以提高代码的灵活性和可读性。
抽象(Abstraction):抽象是从具体的实例中提取共同的特征,形成抽象类或接口,以便于代码的复用和扩展。抽象类和接口可以让程序员专注于高层次的设计和业务逻辑,而不必关注底层的实现细节。
总结大致分为:C++98(1.0)、C++03(TR1,Technical Report 1)、C++11(2.0)、C++14 具体分为:如表格所示
发布时间 | 通称 | 备注 |
2020 | C++20, C++2a | ISO/IEC 14882:2020 |
2017 | C++17 | 第五个C++标准 |
2017 | coroutines TS | 协程库扩展 |
2017 | ranges TS | 提供范围机制 |
2017 | library fundamentals TS | 标准库扩展 |
2016 | concurrency TS | 用于并发计算的扩展 |
2015 | concepts TS | 概念库,用于优化编译期信息 |
2015 | TM TS | 事务性内存操作 |
2015 | parallelism TS | 用于并行计算的扩展 |
2015 | filesystem TS | 文件系统 |
2014 | C++14 | 第四个C++标准 |
2011 | - | 十进制浮点数扩展 |
2011 | C++11 | 第三个C++标准 |
2010 | - | 数学函数扩展 |
2007 | C++TR1 | C++技术报告:库扩展 |
2006 | - | C++性能技术报告 |
2003 | C++03 | 第二个C++标准 |
1998 | C++98 | 第一个C++标准 |
C++ 是面向对象的编程语言。C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,是一种用户自定义的数据类型,它是一种封装了数据和函数的组合。类中的数据称为成员变量,函数称为成员函数。类可以被看作是一种模板,可以用来创建具有相同属性和行为的多个对象。C++ 中的所有东西都与类和对象以及属性和方法相关联。例如:在现实生活中,汽车是一个物体。汽车有属性,比如重量和颜色,还有方法,比如驱动和刹车。属性和方法基本上是属于类的变量和函数。这些人通常被称为"类成员"。 类是我们可以在程序中使用的用户定义的数据类型,它作为对象构造函数或创建对象的"蓝图"来工作。 创建一个类:要创建类,请使用class
关键字:
定义一个类需要使用关键字 class,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。
到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。
函数是一个代码块,它只在被调用时运行。可以将数据(称为参数)传递到函数中。函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,然后多次使用。
创建函数:
C++提供了一些预定义函数,如main()
,用于执行代码。但您也可以创建自己的函数来执行某些操作。要创建(通常称为declare)函数,请指定函数名,后跟圆括号():
C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。
一个 C++ 函数由两部分组成:
但是,也可以将函数的声明和定义分开,以用于代码优化。
C++ 中的变量声明
变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。 当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
C++ 中的构造函数是一种特殊的方法,它在创建类的对象时自动调用。 要创建构造函数,请使用与类相同的名称,后跟括号()。
构造函数还可以获取参数(就像常规函数一样),这对于设置属性的初始值非常有用。 当我们调用构造函数(通过创建类的对象)时,我们将参数传递给构造函数,构造函数将相应属性的值设置为相同的值。
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。C++ 中的函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。 C++ 中的运算符重载 您可以重定义或重载大部分 C++ 内置的运算符。这样,您就能使用自定义类型的运算符。
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。
注:如有不当之处,请批评指正!谢谢!