概述
--知识点1.结构体
1)结构体的声明和定义
struct 结构体名
{ 数据类型1 属性变名1;
...
};
2)结构体的使用
main函数里:
结构体名 结构体变量名;
结构体变量名.属性变量名1=...;
结构体变量名->属性变量名2=...;
...
例如:
...
struct people
{ int age;
char sex;
};
int main()
{ people XiaoMing; //定义了一个小明的结构体对象,具有age和sex两种属性
XiaoMing.age=17; //给小明的age属性赋值
XiaoMing->sex='m'; //调用属性的两种格式 “.” 或者 “->”
...}
--知识点2类的各种延伸
可以将函数放进结构体中,这样使得结构体更加面向对象化。
类比结构体更加结构严谨,尤其体现在数据的封闭性和安全性上。在定义类的成员时要加上访问标示符来表明该成员(数据或函数)能否在指定的作用域中被调用、共享。
1)对象的构造(构造函数会在创建对象后立即执行)
·构造函数的名字必须与雷鸣相同
·构造函数没有返回值,亦不需要返回类型
·构造函数可以是一组重载函数
下面来具体说说构造函数的几种格式:
现已定义类class Complex{
private: double real,imag;
...
接下来写构造函数(其他功能函数忽略):
1)public: Complex(double r=0,double i){real=r;imag=i}; //最直接的定义 其中为real默认了初始值0
2)public: Complex(double r,double i):real(r),imag(i); //带初始化列表的构造函数
注意:有时候需要用一个同类的对象来初始化某个对象。这个初始化是由一个特殊的拷贝构造函数来完成的。定义一个拷贝构造函数的格式如下
类名(const <类名> &); 例如: people (const people &p){this.x=p.x;...;} //const 保证了传入的参数的安全性,&引用节约了空间
2)析构函数
当程序结束时会自动执行来释放对象所使用的空间
--知识点3 .友元
声明友元关系可以在保证数据安全性的前提下,让程序里的函数访问或者调用被声明为友元的类里的私有成员。
友元关系是单方关系,即声明类A是类B的友元,仅仅是A中的某些成员函数能够访问和调用类B中的所有成员(私有的都能访问了,更别说公共的),但是类B中的成员函数仅仅能访问类A中的声明为public的成员。例如
class A
{private:
int num;
public:
...
friend class B; //将类B声明为类A的友元,即B类的成员函数能调用类A中的私有成员(num)
...;}
--知识点4.类的继承
考虑到对象有特殊属性和共有属性,可以在某个具有共有的基础属性的某个基类上,继承出各种具有特殊的属性的类,从而产生特殊的对象,即更加复杂的数据结构。
如果派生类只有一个基类,称作单继承。是从多个基类继承来的,称作多继承。
格式:
class 派生类名:[继承方式] 基类名
{新增成员声明;}
//继承方式有三种,public继承让派生类无权访问基类private成员;private让派生类无法访问基类的成员;protected让派生类可以访问基类的private成员;总的来说 就是一个(public继承)把派生类当朋友看,该给的给,不该给的不给;一个(protected)把派生类当儿子看待,可以访问私有成员;另一个(private)把派生类当外人来看,派生类无权访问基类的成员哪怕是public成员。
当创建派生类对象时,先执行基类的构造函数,在执行派生类的构造函数;析构则先执行派生类的析构函数。
最后
以上就是粗犷爆米花为你收集整理的结构体的进阶——类的全部内容,希望文章能够帮你解决结构体的进阶——类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复