本文共 2527 字,大约阅读时间需要 8 分钟。
之前学c++不是很重视,现在打算重新学一遍,以此记录。
学习 C++,关键是要理解概念,而不应过于深究语言的技术细节。
学习程序设计语言的目的是为了成为一个更好的程序员,也就是说,是为了能更有效率地设计和实现新系统,以及维护旧系统。
- 1.1 C++简介
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
tips:
1.使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。 2.C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序面向对象的程序设计:
完全支持面向对象的程序涉及,包括面向对象开发的四大特性:标准库:
C++和C的区别:
设计思想上: C++是面向对象的语言,而C是面向过程的结构化编程语言语法上:
C++面向对象的特性使其具有封装、抽象、继承、多态等特性 C++相比C,增加多许多类型安全的功能,比如强制类型转换 C++支持范式编程,比如模板类、函数模板等- 1.2基本语法
#includeusing namespace std;int main(){ cout << "Hello Wrold"; return 0;}
标识符
C++ 标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。
要求: 以大小写字母或下划线_开始 标识符内不得出现标点字符。(如@ & %)关键字
即C++预先声明好的单词,有特定功能。 下表为关键字:1.全局静态变量:
定义:在全局变量前加上关键字static,全局变量就定义成一个全局静态变量. 内存位置:静态存储区 初始化:未经初始化的全局静态变量会被自动初始化为0(而自动对象的值是任意的) 作用域:从定义开始到文件结尾,别的文件不可见。2.局部静态变量
定义:在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。 内存位置:静态存储区 初始化:未经初始化的局部静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化); 作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是仍然驻留在内存当中,只不过我们不能再对它进行访问,直到该函数再次被调用,并且值不变;(static定义的静态局部变量分配在数据段上,普通的局部变量分配在栈上,会因为函数栈帧的释放而被释放掉)C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。所以如果你想函数返回一个数组指针,这个数组必须被设置为static变量(见文档8.数组)
3.静态函数
在函数返回类型前加static,函数就定义为静态函数。函数的定义和声明在默认情况下都是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。 warning:不要再头文件中声明static的全局函数,不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它的声明提到头文件里去,否则cpp内部声明需加上static修饰;4.类的静态成员
在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。对多个对象来说,静态数据成员只存储一处,供所有对象共用5.类的静态函数
静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态成员的引用不需要用对象名。在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。如果静态成员函数中要引用非静态成员时,可通过对象来引用。从中可看出,调用静态成员函数使用如下格式:<类名>::<静态成员函数名>(<参数表>);
总结:
1.对于函数定义和代码块之外的变量声明,static修改标识符的链接属性,由默认的external变为internal,作用域和存储类型不改变,这些符号只能在声明它们的源文件中访问 2.对于代码块内部的变量声明,static修改标识符的存储类型,由自动变量改为静态变量,作用域和链接属性不变。这种变量在程序执行之前就创建,在程序执行的整个周期都存在。(static定义的静态局部变量分配在数据段上,普通的局部变量分配在栈上,会因为函数栈帧的释放而被释放掉)C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。所以如果你想函数返回一个数组指针,这个数组必须被设置为static变量(见文档8.数组) 3.对于被static修饰的类成员变量和成员函数,它们是属于类的,而不是某个对象,所有对象共享一个静态成员。静态成员通过<类名>::<静态成员>来使用。加了static关键字,则此变量/函数就没有了this指针了,必须通过类名才能访问。转载地址:http://rmhgz.baihongyu.com/