类里面的this指针,不能显示的写为实参和形参,但是可以在类里显示的使用
this指针是存储在哪里的
不是存储在对象里的,而是作为形参出现的,是存储在栈帧上的
空指针是编译错误还是运行错误
运行错误
构造函数是干什么用的
并不是开空间创建对象,而是初始化对象变量的
构造函数的特征
- 函数名和类名相同
- 无返回值(不需要写void)
- 对象实例化时编译器自动调用对应的构造函数
- 构造函数可以重载
构造函数有参数,要怎么写
类名 变量名(参数)
C++把类型分为内置类型和自定义类型
内置类型就是int/double/char,指针 等
自定义类型就是class和struct等
默认生成的构造函数的规则
内置类型成员不会去做处理,自定义类型会去调用他的默认构造函数(C++11给了个补丁,支持声明时给缺省值)
关于要不要写构造函数的总结
- 一般情况下,要自己写构造函数
- 成员都是自定义类型,或声明时给了缺省值,可以让编译器自己生成构造函数
- 如果自定义类型里没有构造函数,那么成员的值会被初始化成随机值
默认构造函数的范畴
- 自己不写构造函数,叫做默认构造
- 无参构造函数也可以叫默认构造
- 全缺省也可以叫默认构造
可以不传参数就调用构造,都可以叫默认构造
什么是析构函数
和销毁对象有关系,是自动调用的,构造函数是创建,析构函数是销毁
析构函数怎么创建
构造函数前面加上~符号,并且析构函数没有参数
类关键字是什么
class,后面跟的是对象名
什么是成员
类里面定义的存储数据的变量,就是类的成员,如果是函数,就是成员函数
对象变量要怎么使用对应的成员函数
对象变量.成员函数
类里面的私有成员要怎么访问
只能通过成员函数进行访问
构造函数的成员名和参数名
构造函数的参数名不能和对象的成员名起一样的名字,因为构造函数的参数表示的不是类成员,而是赋值给类成员的值
对象之间可以赋值
源对象中的每个成员的值会赋值给目的对象的每个成员
如果定义的对象变量是一个常属性(const)的变量,则需要把方法函数也定义为常属性,以确保对象中成员的值不会被修改
方法声明
Void show() const;
方法定义
Void stock::show() const;
this指针
每个成员函数(包括构造函数和析构函数),都有一个this指针,指向调用对象,this存储的是地址,对应的对象可以表示为*this