在学习类之前,相信很多人跟博主一样,已经学习过结构体。在 C++ 中,struct 和 class 的区别非常小,几乎只是默认访问权限的不同。默认访问权限/继承权限:
- struct 的默认成员访问权限和默认继承方式都是 public。
- class 的默认成员访问权限和默认继承方式都是 private。
学习完毕,完结撒花~~ :)
C++ 中的使用惯例:
struct:通常用于纯数据对象(POD, Plain Old Data),或者只有简单方法的数据结构。例如:点 Point、矩形 Rect、返回多个值的轻量级对象。
class:用于需要大量封装、继承和多态的完整对象。例如:FileStream, String, Animal 等。
第一个案例
写一个用户类,包含姓名,年龄,以及一个say函数,可以根据不同用户名称来组装欢迎语句。
#include <iostream>
using namespace std;
class User
{
public:
string name;
int year;
void say(){
cout << "Hello " << name << "!" << endl;
}
};
int main()
{
User zhao,qian;
zhao.name="Zhao yi";
qian.name="Qian er";
zhao.say();
qian.say();
}
构造函数
在 C++ 中,构造函数是一个特殊的方法,当创建类的对象时,它会自动被调用。要创建一个构造函数,请使用与类相同的名称,后跟括号 (),别看名字挺高大上,目测其实就是在一个类的实例被创建出来以后,做一些初始化的工作:
#include <iostream>
using namespace std;
class User
{
public:
string name;
int year;
User(string x,int y){
name=x;
year=y;
cout << "User " << name << "is created !" << endl;
}
};
int main()
{
User zhao("zhao yi" , 18),qian("qian er" , 16);
}
访问权限
上面的程序中出现了一个关键字 “public”。public 关键字是访问说明符。访问说明符定义如何访问类的成员(属性和方法)。在上面的例子中,成员是公共的 - 这意味着可以从代码外部访问和修改它们。
但是,如果我们希望成员是私有的,并对外部世界隐藏呢?在 C++ 中,存在三个访问说明符:
- public - 成员可以从类外部访问
- private - 成员不能从类外部访问(或查看)
- protected - 成员不能从类外部访问,但可在继承的类中被访问。
在下面的例子中,我们演示了 public 和 private 成员之间的区别:
#include <iostream>
using namespace std;
class User {
private:
int year;
public:
string name;
User(string x,int y){
name=x;
year=y;
cout << name << " is " << y << " years old!" << endl;
}
};
int main() {
User zhao("zhao yi", 18);
cout << zhao.year << endl; //因为访问权限的问题,运行到这里就该报错了.
}
如果注释掉报错的那一行 cout 语句,程序会输出如下内容:
zhao yi is 18 years old!
也就是说,这个私有属性他自个儿还是能随便用,跟图馆内的不外借的文献一样,馆里随便看,想拿出去没门。
注意:默认情况下,如果您不指定访问说明符,类的所有成员都是私有的。