C++:类和对象(1)
一。类的定义1.class的标准语法格式class 类名{ 访问限定符: 成员 };类末尾分号不可省略类内变量成员变量属性类内函数成员函数方法编码惯例在成员变量前面或后面加‘—’或者m开头定义在类里面的成员函数默认为inline代码演示2.class和struct的区别C 中 struct 升级支持内部定义函数唯一核心差异是默认访问权限class 默认全部成员privatestruct 默认全部成员public3.类域类是一个独立的作用域类的所有成员都在类的作用域中在类外定义成员时需要使用::作用域操作符指明成员属于哪个类域4.三大访问限定符1public它所修饰的成员可以在类外直接被访问2protected/private它们修饰的成员在类外不可以直接被访问说明访问权限作用域从该访问限定符出现的位置开始一直到下一个访问限定符出现为止如果后面没有访问限定符作用域就到 } 即类结束class定义成员没有被访问限定符修饰时默认为privatestruct默认为public一般成员变量都会被限制为private/protected需要给别人使用的成员函数会放为public5.实例化1概念用类类型在物理内存中创建对象的过程称为类实例化出对象2类是对象的一种抽象描述只是一个模型。用类实例化出对象时才会分配空间。一个类也可以实例化出多个对象。3对象大小遵循内存对齐规则。--- 注意点如果没有成员变量那么类对象的大小为一个字节只是为了占位表示对象存在6.this指针存放在栈(1)概念:它是成员函数隐含的形参是一个指向调用该成员函数的当前对象的指针例如Init的真实原型为void Init(Date*const this,int year,int month,int day)。(2)补充:不能在实参和形参的位置显示的写this指针但可以在函数体内显示使用this指针成员函数在访问成员变量时本质就是通过this指针访问的补充题目1.下面程序运行的结果是正常运行解析1. 成员函数不属于对象Print 是存放在代码段的函数不是存在对象内存里。对象里面只存成员变量这里就是 _a 。p-Print() 本质等价于 A::Print(p) 把指针 p 传给隐藏的 this 指针。2. 这里 Print 函数没有访问任何成员变量函数内部没有用到 this-_a 。虽然 this 是nullptr空指针但是代码没有去解引用访问成员不会触发崩溃函数可以正常执行打印。3.如果在Print成员函数里加上count_aendl则程序报错。因为这时候代码等价于this-_a属于空指针的解引用程序直接崩溃。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →