首页 > 编程 > C++ > 正文

C++总结学习(一)

2019-11-06 07:25:12
字体:
来源:转载
供稿:网友

继承:

公有继承 class A : public B 可以调用父类的成员函数,或成员变量保护继承 class A : PRotected B私有继承 class A : private B

如果继承方式是public的,基类成员访问属性 继承方式 派生类成员访问属性

类型 基类 访问权限
private成员 public 无法访问
protected成员 public protected
public成员 public public

友元

借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。一个函数可以被多个类声明为友元函数,这样就可以访问多个类中的 private 成员。友元的关系是单向的而不是双向的。如果声明了类 B 是类 A 的友元类,不等于类 A 是类 B 的友元类,类 A 中的成员函数不能访问类 B 中的 private 成员。友元的关系不能传递。如果类 B 是类 A 的友元类,类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类。友元函数不是成员函数,用法也与普通的函数完全一致,只不过它能访问类中所有的数据,友元函数破坏了类的封装性和隐蔽性,使得非成员函数可以访问类的私有成员。一个类的友元可以自由地用该类中的所有成员。必须将对象名或对象的引用作为友元函数的参数,这样才能访问到对象的成员。

析构函数

和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。

作用域

类作用域、类类型的作用域和对象有 类体的区域称为类作用域,类的成员函数与成员数据,其作用域都是类的作用域类类型的作用域,在函数定义之外定义的类,其类名的作用域为文件作用域为块作用域对象的作用域与前面介绍的变量作用域完全相同,全局对象、局部对象、局部静态对象等

类的嵌套

在定义一个类时,在其类体中以包含一个完整定义,称为类的嵌套,类是允许嵌套定义的

对对象成员的构造的调用顺序取决于这些对象成员在类中说明的顺寻,注意是类中的说明顺序,与它们在成员初始化列表中的顺序无关。当建立ClassName的对象时,先调用各个对象成员的构造函数,初始化相应的对象成中,然后才执行类ClassName的构造函数,初始化类ClassName中在的其它成员。

构造函数不能被继承,派生类的构造函数必须调用基类的构造函数来初始化基类的构造函数来初始化基类成员基类子对象。

派生类的构造函数的调用顺序如下:

基类的构造函数子对象类的构造函数派生类的构造函数

虚函数

多态:调用同一个函数名,可以根据需要但实现不同的功能。主要是运行时多态。若要访问派生类中相同名字的函数,必须将基类中同名函数定义为虚函数,这样,将不同的派生类对象的地址赋值给基类指针变量后,就可以动态的调用不同类中的函数。在派生类中重新定义基类中的虚函数时,可以不用关键字virtual来修饰这个成员函数。在程序执行过程中,依据指针具体指向哪个对象,或依据引用哪个类对象,才能确定激活哪个版本,实现动态聚束。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选