大家好我是小锋今天我们来学习类和对象
面向过程和面向对象初步认识
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完 成。
类的引入
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。
struct add {
//成员函数
//初始化
void init(int year=1, int month=1, int day=1) {
_year = year;
_month = month;
_day = day;
}
void addprintf() {
cout << "year=" << _year << endl;
cout << "month=" << _month << endl;
cout << "day=" << _day << endl;
}
//成员变量
int _year;
int _month;
int _day;
};
int main() {
add ps;
ps.init();
ps.addprintf();
ps.init(1, 2, 3);
ps.addprintf();
return 0;
}
与上面的struct类似,c++更喜欢用class来代替。
那我们来看看class定义的类与stack的区别
类的访问限定符
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。
类的作用域
类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。