如何创建一个对象来反应现实世界 首先将现实世界进行抽象,(属性和行为)得到ADT 然后抽象数据类型可以用类来表示
对象是类的实现
现实世界抽象出多个类他们之间的关系(对象的交互)是
组合
继承
代理
c++中的命名规范
类名第一个字母大写
第一个全小写其他的都大写
方法名 方法小写后面的都大写
srtruct class 的区别
多了访问限定符 public private protected
struct DATA{};
在c语言中定义了一个空的结构体变量不占 空间sizeof(0)
在c++中定义一个空的结构体数据占一个字节 因为在创建对象时先要开辟空间,然后调用构造函数。为什么要这样做 类的实例化过程中必须要给对象给一个地址。所以就定义了一个字节的空间。
一个空类 系统会默认加上默认构造函数,默认析构函数,默认的拷贝构造函数,默认的复制运算符.(剑指offer 编程之美)
如果在类中定义函数,系统默认按找inline处理 在类外当做一般函数处理
创建类的对象是在栈中
对象大小为成员变量的大小
其余的类中的成员方法都在代码段中;(不同对象的成员)
不同的成员对象调用成员函数时会在第一个参数处加一个 &opp 指针 的实参 该调用的该成员函数的地方也会多一个形参typeclass * const this 指针 this指针的地址是是开辟该对象空间的地址。使得所有成员变量前多一个this指针。
构造函数在定义对象的时候调用也有this指针指向的是开辟内存空间的地址。(this不是指向对象的地址。)
析构函数实在return的时候 被调用指针回退之前也就只进程结束之前并且析构函数析构的是对象产生在外面的空间(主要是堆)
构造函数可以重载
析构函数不能重载
并且构造和析构都没有返回值
构造和析构函数都是由系统伴我们调用的、
先构造后析构 后构造 的先洗后
Coods good2();先开辟空间然后根据参数内型选择合适的构造函数
默认的构造函数不要带小括号(因为和函数定义冲突编译器认为是定义)
(如果定义了构造函数默认的构造函数就不能在使用)