C++
面向对象程序设计--类的设计--类图
C
面向过程程序设计--编程思想--流程图
编程
解决问题,描述问题
C++---封装,继承,多态 友元 抽象
初始化列表
类型名 变量名 {} ;
int a {};
输入输出
头文件:#include<iostream>
using namespace
//cin 键盘
cin >> ch >> a;//输入流
cout << "a=" << a <<"ch =" << end1;//输出流
类:
将现实生活中的事物抽象出来,将它的不同类型的属性以及与这些属性相关的操作封装在一起,有的是私有的,不允许外界访问,
有的是公有的,构成一个集合,形成一种新的数据类型---类(构造数据类型)
类是抽象出来的,本身不占内存空间
类的大小
-
类里面数据成员大小之和
-
普通函数是不占类的空间大小
-
static数据成员不在类中分配空间
-
virtual函数占一个指针的大小
对象:是类的一个实例化,是现实生活中实实在在存在的,占用内存单元.
访问权限
- public:除了自己外界也可以使用---操作
- protected:除了自己,子类可以访问,外界不能访问--除过友元
- private:除了自己,其他都不可以访问--除过友元 ---属性
public: //操作(成员函数)
private://属性(成员变量)
函数参数带默认值
- 可以不传参数
- 如果传参了,就用所传递的值
- 如果有一个参数带默认值,则后面的必须带
- 默认参数的默认值,只在声明的时候带,在定义的时候不带(如果将函数的定义放在类的外部,则不需要带默认值)
inline函数
内联函数--用空间的消耗换取了函数调用时间的消耗
将功能比较简单,代码比较短小(一般不超过5行)的函数作为内联来编译
inline只是程序员的建议,至于编译器是否按照inline来编译,不一定
宏定义和inline的区别
- 宏定义是在编译之前,inline是在编译时
- 宏定义会出现歧义,inline函数不会
- 宏定义是预处理命令,inline是函数
非静态成员函数中有隐含的this指针,接收当前对象的地址
一个实实在在的对象,应该有合法的属性,而不是出来之后,再去设置属性
要实现程序的过程,必须在对象出来的这一时刻,初始化合法的值,而且不能由程序员调用
要给属性合法的值,必须通过成员函数初始化,那么这个成员函数就应该比较特殊---能在对象出来的时候自动调用
构造函数
构造对象(给数据成员分配空间,给合法值),由系统调用,在接近在定义对象时自动执行一次。
用途:
1)构建对象 2)初始化对象中的属性 3)类型转换
对于C语言:有存储空间,即可操作
对于C++:有存储空间,不一定有对象,需要调用构造函数;有对象,一定有存储空间(空类型也要分配一字节作为占位符)
函数特征
1)函数名与类名相同
2)没有返回类型(不是void),有返回值(即构造函数所创立的对象)
3)构造函数只能调用一次
4)构造函数可以重载
5)可以在类中定义,也可以在类中声明,在类外定义
6)如果类说明中没有给出构造函数,则C++编译器自动给出一个缺省(默认)的构造函数(类名(void){})
sizeof是在编译的时候确定此对象的大小