本2.5小节,我将来回顾结构、权限修饰符、类简介这三方面的内容。
目录:
(1)结构回顾
(2)public和private权限修饰符
(3)类简介
(4)类的组织
(1)结构回顾:
我们都知道,struct结构体(和class类一样),都是一种自定义的数据类型。那么,到底C++中的结构和C中的结构体有何不同呢?
这里我先给出答案:
C++的结构除了具备c中的结构的all功能外,还增加了很多扩展功能,其中最突出的扩展功能之一就是:
C++中的结构不仅仅有成员变量,还可以在其中定义成员函数(或者说是方法).
C中的结构体:
struct Stu {
//成员变量
int age;
char name[20];
};
C++中的结构体:
struct Stu {
//成员变量
int age;
string name;
//成员函数
void reviseStuAge(int a) {
this->age = a;
}
};
(2)public和private权限修饰符:
(1)public(公有)
(2)private(私有)
(3)protected(保护)
( 本节课只谈前2个,protected后续再谈!)
public:是公共的意思,用这个修饰符修饰结构or类中的成员变量or成员函数,那么就可以被外界访问,一般呢我们把需要能够被外界访问的东西,就修饰为public。就好像是该类的外部接口一样!
private:私有的意思,用这个修饰符修饰结构or类中的成员变量or成员函数,只有这个结构or类本身的内部可以访问这些private修饰的成员变量or函数,外部是无法访问private修饰的这些东西的!
注意:
对于一个结构体而言呢,结构成员变量or函数默认情况下(也即缺省的情况下)都会有public属性!,所以可以不加public
但是对于一个类而言呢,必须有至少一个修饰符,usually呢我们都会把类中的修饰符弄为public,至于private你需要不就看你的需求了!
struct Stu {
//结构体的成员变量or函数默认case下都是public的访问属性的
//public:
int age;
string name;
int myGFNumbers;
void reviseStuAge(int a) {
this->age = a;
}
};
class Stu {
//类的成员变量or函数默认case下都是private的访问属性的
//private:
int age;
string name;
int myGFNumbers;
void reviseStuAge(int a) {
this->age = a;
}
};
这里就不具体地拿例子来演示了,若有疑问可以自己写一小段代码test一下。
(3)类简介:其实没啥好简介的,注意一下结构体和类的区分即可
(标准的C++库中包含了大量丰富的类和函数,比如string,要熟练运用和掌握起来!)
注意:(以下内容就是CPP的结构体和类的重要的2点区别!!!)
a)(与上述(2)的注意事项 重合,这里也不重复贴代码了)
C++的结构体中的成员变量和成员函数,其默认的访问级别都是public!
C++的类中的成员变量和成员函数,其默认都是private的!
因此,以后我们不论是在写一个结构体还是说写一个类时,我们都最好一个public的权限修饰符!这样可以避免类的缺省情况下的访问权限问题!
b)
C++的结构体之间do继承时,默认是用的public
C++的类之间do继承时,默认是用的private
struct test1 {
int scores;
};
//struct test1_son: public test1{...};
//等价于不写public
struct test1_son: test1 //C++中的结构体继承自别的结构体时的默认继承方式都是public的!
{
};
class testclass {
public:
int scores;
};
//C++中的类继承自别的类时的默认继承方式都是private的!
//class testclass_Son: private testclass{...};
//等价于不写private
class testclass_Son: testclass
{
};
(4)类的组织(书写规范),其目的是:为了方便代码的维护和管理
1-类的定义(声明)我们都会放在一个.h头文件中,头文件名称可以与类名相同,比如student.h
2-类的具体实现代码,放在一个.cpp文件中,命名规则同上,student.cpp
(当然,如果是类模板的头文件的话,我们需要把函数的定义和实现都放在同一个头文件中,并且把头文件名称改为student.hpp)
(.hpp表示的是.h + .cpp 的缩写的意思)
这些知识点非常的基础,这里就贴上代码演示了,那么今天这一小节的回顾到此结束!



