1.类的引入
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。
#include <iostream>
// 定义一个结构体
struct Point {
int x;
int y;
// 在结构体中定义一个函数
void print() {
std::cout << "x = " << x << ", y = " << y << std::endl;
}
};
int main() {
// 创建一个结构体对象
Point p;
p.x = 10;
p.y = 20;
// 调用结构体中的函数
p.print();
return 0;
}
这是因为c++兼容c所以在cpp文件中可以这样定义,但是在c++大家都是喜欢用class来定义的,这样的结构就叫做类。
上述结构体也可以写成将struct改为class.
2.类的定义
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省 略。 类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。
成员变量命名规则的建议:
class Date
{
public:
void Init(int year)
{
_year = year;
}
private:
int _year;
};
这里我们将成员变量加上_其实是为了区别成员变量。
我们一般将成员变量设置为private的,因为我们不希望使用者随意修改成员变量。
3.访问限定符
我想大家在看到上述代会有一个疑惑,public:...是什么呢?
C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其 接口提供给外部的用户使用。
访问限定符说明:
1. public修饰的成员在类外可以直接被访问。
2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)。
3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止。
4. 如果后面没有访问限定符,作用域就到 } 即类结束。
5. class的默认访问权限为private,struct为public(因为struct要兼容C) 。
C++中struct和class的区别是什么?
C++需要兼容C语言,所以C++中struct可以当成结构体使用。另外C++中struct还可以用来定义类。和 class定义类是一样的,区别是struct定义的类默认访问权限是public,class定义的类默认访问权限是 private。
4.封装
在C++中,封装是一种面向对象编程的概念,它将数据和操作封装在一个单独的实体中,即类。封装通过将数据成员和成员函数放在类的内部来实现。
简单理解为:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
5.类的作用域
类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 :: 作用域操作 符指明成员属于哪个类域。
class Person
{
public:
void PrintPersonInfo();
private:
char _name[20];
char _gender[3];
int _age;
};
// 这里需要指定PrintPersonInfo是属于Person这个类域
void Person::PrintPersonInfo()
{
cout << _name << " "<< _gender << " " << _age << endl;
}