目的:了解类,全面认识C++
📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊
7.3 类的成员数据
1.类的成员函数(简称:类函数)是函数的一种,他是有类型和返回值的,他与一般函数的区别是:他是属于一个类的成员,出现在类体中,可以被指定为private、public、protected
2.在使用成员函数时,要注意访问属性,在后面我们会提到
3.类外定义成员函数和类里定义成员函数的区别
在类外:
#include <iostream>
using namespace std;
class Student
{
public:
void display();
private:
int num;
string name;
};
void Student::display()//在类外定义
{
cout<<num<<name<<endl;
}
在类里:
?
#include <iostream>
using namespace std;
class Student
{
public:
void Student::display()//类里定义
{
cout<<num<<name<<endl;
}
?
private:
int num;
string name;
};
?补充—成员函数的定义:
a:如果是小函数可以适当放在类里
b:如果在成员外定义成员函数,那么就要在类里进行原型声明
c:在类外定义成员函数,就要给予限定(参考第一个代码),必须在函数名前加上类名,“ ::”是作用域限定符(别名:作用域运算符),如果没有“::”则不是Student中的display函数
d:若在“ ::”前面没有类名,或者函数名前面即无类名又无作用域运算符,表示这个函数不属于任何一个类型,这个函数也不是成员函数,例如::display()或display()
4.内置成员函数
a:如果成员函数中不包括循环体等控制结构,C++系统自动地对它们作为内置函数处理
b:因为一般成员函数的内容都会很小,但是调用函数的时间又往往大于执行的时间,所以弄成内置函数是为了减少时间的开销
d:但成员函数不在类里定义而在类外定义时,系统是不会默认它时内置函数的
e:在一般函数要成为内置函数时,在声明加inline和定义处加inline都是可以的(二选一),但在类外定义的成员函数时,则必须在定义和声明处都要加上inline
4.成员函数的存储方式
a:在类定义对象时,系统会为每一个对象分配存储空间
b:同一类的不同对象中国的数据成员一般是不相同的,而不同对象的函数的代码是相同的,不论调用哪一个对象的函数代码,其实调用的都是同样的内容代码,我觉得跟一句话有关“类是对象的抽象,对象是类的特例”
d:不论成员函数是在类外定义还是在类内定义,成员函数的代码段的存储方式是相同的,都不会占用对象的存储空间
f:不要将成员函数的这种存储方式和inline(内置)函数的概念搞混了,但不论是否使用inline声明,成员函数的代码段都不占用对象那个的存储空间,inline函数只影响程序的执行效率,而与成员函数是否占用对象的存储空间无关
g:虽然成员函数并没有放在对象的存储空间中,但从逻辑的角度,成员函数是和数据一起封装在一个对象中的,只允许本对象中成员的函数访问同一对象的私有数据
📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊
8.4 怎样访问对象的成员
1.有三种方法:
a:通过对象名和成员运算符访问对象中的成员
b:通过指向对象的指针访问对象中的成员
c:通过对象的引用访问对象中的成员
2.通过对象名和成员运算符访问对象中的成员
a:形式:对象名.成员名
b:调用范围:不仅可以在类外引用对象的公用数据对象,而且还可以调用对象的公用成员函数,但是必须指出对象那个名,但也只能访问public成员,而不能访问private成员
c:在一个类中应当至少有一个公用的成员函数,作为对外的接口,否则就无法对对象进行任何操作
3.通过指向对象的指针访问对象中的成员
class Time
{
public:
int hour;
int minute;
};
Time t,*p;
p=&t;
cout<<p->hour;
4.通过对象的引用访问对象中的成员
Time t1;
Time &t2=t1;
cout<<t2.huor;
共同学习,欢迎指正!