C++ 类和对象期末复习笔记
Posted 猛男Banana君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 类和对象期末复习笔记相关的知识,希望对你有一定的参考价值。
引言
续上一篇笔记,上一篇笔记的地址在这👇
正文
1、静态成员
1)静态数据成员
a.若将类的一个数据成员定义成静态型的,则该类的所有对象的该成员共用同一存储空间
b.定义方法:前头加关键字static
例:
class Sample
{
private:
int a,b,c;
static int d; //静态数据成员
};
c.静态数据成员必须在类体外初始化,不需要加static
PS:若在类外初始化时没有赋一个确切的值,则默认初值为0
d.静态数据成员是属于类的,一个类只有一个静态数据成员的存储空间,但类的对象也可以引用它
e.静态数据成员的作用:如果想在同类的多个对象之间实现数据共享,且不使用全局对象,此时就可以用静态数据成员
f.可以通过类名或对象名调用静态数据成员
例:
Sample::name;
a.name;
g.不可以通过对象的this指针来访问静态数据成员
h.静态数据成员不可以用参数初始化表进行初始化操作,原因很简单,因为初始化表是在定义对象的时候进行的,利用了this指针进行操作
2)静态成员函数
a.与静态数据成员一样,静态成员函数也是属于类的,不属于对象
b.可以通过类名或对象名调用静态成员函数
c.在静态成员函数中无法直接访问非静态数据成员,需要通过对象名间接访问
例:
class Sample
{
int a; //非静态数据成员
static int b; //静态数据成员
public:
static int c; //公有静态数据成员
Sample(int x) {a=x;b+=x;}
static void disp(Sample s)
{
cout<<"a="<<s.a<<", b="<<b<<endl; //访问非静态数据成员和静态数据成员
}
};
2、友元
1)友元函数不是类的成员函数,但需要在类中加以声明。
例:
friend double dist(Point&, Point&);
2)使用友元函数是为了提高程序的执行效率。
3)慎用友元函数,因为它可以在类外直接访问类的私有成员(含保护成员),破坏类的封装性和隐蔽性。
4) 因为友元函数是类外的函数,所以它的声明可以放在类的私有段或公有段,没区别。
5)使用友元函数的情况:
a.运算符重载的某些场合需要使用友元
b.两个类要共享数据的时候
6)一个类可以作为另一个类的友元,这个类的所有成员函数都是另一个类的友元函数,称之为友元类。
例:
class A
{
......
friend class B; //B类是A类的友元
};
class B
{
......
public:
void f1();
float f2();
float f3();
};
7)常数据成员的定义就是在前头加关键字const,常数据成员的值是常量,不可被修改。
8)常数据成员的初始化只能在类的构造函数的成员初始化列表中进行。
9)定义常成员函数的方法是在函数头的尾部、参数的右括号后面加关键字const。
例:
int fun() const
{
x=5;
y=6;
return x+y;
};
10)常对象只能调用常成员函数。
以上是关于C++ 类和对象期末复习笔记的主要内容,如果未能解决你的问题,请参考以下文章