初识面向对象——类

对面向对象编程来说,一切都是对象,对象用类来描述
类把对象的数据和操作数据的方法作为一个整体考虑
定义类
定义类的语法
⚠
类的成员可以是变量,也可以是函数
类的成员变量也叫属性
类的成员函数也叫作方法/行为,类的成员函数可以定义在类的外面(类中只需声明即可)
用类定义一个类的变量,叫创建(或实例化)一个对象
对象的成员变量和成员函数的作用域和生命周期与对象的作用域和生命周期相同
类的访问权限
类的访问权限有三个(public(公有)、private(私有)、protected(受保护的))
把需要向外暴露的成员声明为public
把需要隐藏类的数据和实现的声明为private
类的内部可访问public(公有)、private(私有);只有public(公有)能被类的外部访问
💡在一个类中private和public可以多次出现
简单使用类
类的成员函数可以直接访问该类中其他的成员函数(可以递归)
类成员函数可以重载,可以使用默认参数
⚠注意事项
void setnameno(string name1,int no1 = 10)
与void setnameno(string name1)
虽然参数列表不同,但他们不能同时出现,因为这两个都可以只传入姓名参数,编译器无法匹配对应的函数(第一个函数学号有默认参数,当不传入学号时,会采用默认参数)
可以为类的成员指定缺省值(C++11标准)
类可以创建对象数组,与结构体数组一样
对象可以做为实参传递给函数(一般为传传引用)⚠如果类很小也可以传值
可以用new创建对象,用delete释放对象
在类的外面一般不直接访问(读和写)对象的成员,而是用成员函数
对象一般不用memset()函数清空成员变量,可以用一个专门清空成员变量的成员函数
对类和对象使用
sizeof
运算符意义不大,一般不用用结构体描述纯粹的数据(C++内置的数据类型和C风格字符串 (没有类和函数)),用类描述对象
类的分文件编写(声明类的代码放头文件中,把成员函数定义的代码放入源文件中)
在类的声明中定义的函数该自动转化为成员内联函数,在类声明之外定义的函数使用
inline
限定符也是内联函数
如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。
在类定义中的定义的函数都是内联函数,即使没有使用 inline 限定符。
引入内联函数的目的是为了解决程序中函数调用的效率问题,这么说吧,程序在编译器编译的时候,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换,而对于其他的函数,都是在运行时候才被替代。这其实就是个空间代价换时间的节省。所以内联函数一般都是1-5行的小函数。
为了区分类的成员变量和成员函数的形参,把成员变量名加上m_前缀或后缀,如m_name或者name