在写程序定义类时生成不要忘记了花括号后边的分号,这是定义不是函数
类与结构体:
C中的结构体不能定义函数,而C++中的结构体可以定义函数,结构体是一种特殊的类。
二者的不同体现在对于成员变量的权限控制上。结构体的变量默认权限是public
,类默认权限为private
。
访问控制权限的类别:private
\ public
\ protected
。
C++的特性
类与对象
类是比较抽象的,而对象是具体存在的。对象是类的实例化。
构造函数和析构函数
每个类都需要有构造函数和析构函数,分别在实例化类的过程中进行类内部成员变量的初始化和销毁。构造函数可以重载为有参数的(依然无返回值),但析构函数没有参数,没有返回值。
重载
函数的参数类型、参数个数不同时,才能构成函数的重载。只有返回类型不同,不能构成重载,并且有默认参数的函数也不能重载。
继承
基类(父类)和派生类(子类)。子类可以很好的继承父类定义的成员变量和函数。可以多重继承,但是要考量各个基类是否有先后顺序。
多态
C++的多态是通过虚函数来实现的。这个多态性是通过迟绑定技术实现的。需要在基类的函数前加上virtual关键字。在子类中如果有对父类中虚函数的覆盖定义,则无论该覆盖定义是否有virtual
关键字,都是虚函数。
派生类函数的覆盖和隐藏其实没有太复杂,覆盖是发生在派生类和基类之间的,两个必须完全相同,并且都是虚函数。若不是如此,就是隐藏(类似于局部性变量和全局变量的相互屏蔽关系)
引用
引用多数用在函数的形参上面,变量本身就是自己的一个引用 。
设计类的习惯
通过把类的定义及类成员函数的声明放在头文件中,将类中成员函数的实现放在源文件中,最后再加一个主函数文件。为了避免类的重复定义,可以加入条件预处理指令。
/*
#ifndef VC++程序编译链接的原理与过程
#define VC++程序编译链接的原理与过程
#endif
*/