1.1类的定义:
C++是一门面向对象的语言,便就引入了类的概念,类在一定程度上与C语言中的结构体很相似。Class为定义类的关键字,如下示例:
class student
{
char name[10];
int age;
int print();
};
类不仅可以用class来定义,还可以用struct定义,因为C++完全包含C语言,二者不同的是,再类中没有访问限定时,class默认private访问方式,struct默认public访问方式。
1.2类的使用:
类的成员都在类的作用域中,在外部无法直接调用,需要使用作用域解析符,示例如下:
class student
{
public:
char name[10];
int age;
void print();
};
void student::print()
{
cout << age << endl;
}
1.3类的大小:
类与结构体一样,都有大小,即所有成员大小之和,但仍遵守内存对齐原则,空类的大小为1个字节。内存对齐规则如下:
1.4类的访问方式:
private(私有):在类外不能调用
public(公有:可在类外调用
proteted(保护):在类外不能调用
访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
2.1作用:
如果一个类定义了很多个对象,在调用某个对象中的成员函数来访问某一变量时,都是通过指针来访问的,编译器自动给成员函数添加了一个指针参数,这个指针便是this指针,其指向需要访问的变量。
2.2this指针特性:
3.1概念
构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员 都有 一个合适的初始值,并且在对象的生命周期内只调用一次。
3.2 特性:
3.3 示例:
class A
{
public:
A(int x, int y)
{
a = x;
b = y;
}
void print()
{
cout << a << " " << " " << b << endl;
}
private:
int a;
int b;
};
int main()
{
A a(1,2);
a.print();
system("pause");
return 0;
}
4.1 概念:
与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而 对象在销毁时会自动调用析构函数,完成类的一些资源清理工作。析构函数也是特殊的成员函数。
4.2 特性:
4.3 示例:
class A
{
public:
A(int x, int y)
{
a = x;
b = y;
ptr = (int *)malloc(sizeof(int));
}
~A()
{
if (ptr)
{
free(ptr);
ptr = nullptr;
}
a = 0;
b = 0;
}
private:
int a;
int b;
int *ptr;
};
5.1概念:
只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象 创建新对象时由编译器自动调用。
5.2 特性:
拷贝构造函数是构造函数的一个重载形式。拷贝构造函数的参数
只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用。
5.3 示例:
class A
{
public:
A(int x, int y)
{
a = x;
b = y;
ptr = (int *)malloc(sizeof(int));
}
A(const A& d)
{
a = d.a;
b = d.b;
}
private:
int a;
int b;
int *ptr;
};
6.1 概念:
C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类 型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。函数名字为:关键字operator后面接需要重载的运算符符号。
6.2规则:
6.3 示例:
class A
{
public:
A(int x, int y)
{
a = x;
b = y;
ptr = (int *)malloc(sizeof(int));
}
bool operator==(const A &d1)
{
return (d1.a == a&&d1.b == b);
}
private:
int a;
int b;
int *ptr;
};
7.1 概念:
友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声 明,声明时需要加friend关键字。
7.2 特性:
友元函数可访问类的私有成员,但不是类的成员函数
友元函数不能用const修饰
友元函数可以在类定义的任何地方声明,不受类访问限定符限制
一个函数可以是多个类的友元函数
友元函数的调用与普通函数的调用和原理相同
7.3 示例:
class A
{
friend void print(const A& d);
public:
A(int x, int y)
{
a = x;
b = y;
}
private:
int a;
int b;
};
void print(const A& d)
{
cout << d.a << " " << d.b << " " << endl;
}
8.1 概念:
友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。
8.2 特性: