C++阶段小结(三)

2014-11-24 07:35:58 · 作者: · 浏览: 4
;// b, c
Stu stu2;// b, c
cout<<"stu1.a="<
cout<<"stu2.a="<
stu1.a = 1000;//普通成员变量一样的方式访问别且修改静态成员变量
cout<<"======================"<
cout<<"Stu::a="<
cout<<"stu1.a="<
cout<<"stu2.a="<
静态成员函数
静态成员函数就是static修饰的成员函数
class Box{
static int volume();
}
访问静态成员函数的方式有两种:
1. 与普通成员函数访问的方式一样,可以用对象、指针和引用来访问
2. 静态成员函数所属类类名::静态成员函数,即int class::volume();
3. 静态成员函数中没有this指针,而是用“类名::”来代替this,因此静态成员函数中只能够访问类中的静态成员变量。
例如:class Stu {
public:
static int a;//静态成员变量
int b;
int c;
static void static_m1();
static void static_m2();
void m3();
void m4();};
void Stu::static_m1() {
cout<<"Stu::static_m1()\n";
Stu::a = 23; //可省Stu::
Stu::static_m2(); //可省Stu::}
void Stu::static_m2() {
cout<<"Stu::static_m2()\n";}
void Stu::m3() {
this->static_m1();
Stu::static_m1();}
void Stu::m4() {}
main() {
Stu::static_m1();
Stu::static_m2();
Stu stu1;
stu1.static_m1();
stu1.static_m2();
}
static 的总结
1. static修饰的成员可以像普通的成员一样被访问(对象.成员,对象指针->成员,引用)
2. static修饰的成员函数中不能通过this访问普通的成员,但是可以通过类名::访问静态成员
3. 普通的成员函数中可以通过this访问静态成员,也可以通过类名::访问静态成员
十四、访问权限修饰符
public(公有的)修饰的成员没有限制,都可以访问
protected(受保护的)修饰的成员变量只能够在当前类的(当前类的成员函数)或子类中访问
private(私有的)修饰的成员变量只能够在当前类(当前类中的成员函数)中使用
十五、友元
在一个类中可以有公用的(public)受保护的(protected)和私有的(private)成员,还有一个例外——友元(friend)
类中的私有成员可以在以下四个地方被访问:
1.当前类中
2.类的友元函数;
3.类的友元成员函数;
4.类的友元类的成员函数;
类的友元函数就是在类中把普通函数用friend进行声明
例如:
class Stu{
friend void test2();
Private:
int age;
void show();
}
void test1(){
Stu stu;
stu.age;//错误,私有成员不可以调用
Stu.show();
}
void test2(){
Stu stu;
Stu.age=23;
Stu.show();}//正确,友元函数中可以访问私有成员
类的友元成员函数就是在类中把另一个类的成员函数用friend进行声明,例如:
class Stu{
friend void Teacher::test2();
private:
int age;
void show();
}
class Teacher{
public:
void test1();
Void test();
}
Void Teacher::test1(){
Stu stu;
stu.age=2;//错
stu.show();//错
}
Void Teacher::test2(){
Stu stu;
stu.age=2;
stu.show();//对
}
类的友元类,类的友元类就是在类中把另一个类用friend进行声明,例如:
class Stu{
friend class Teacher
private:
int age;
void show();
}
class Teacher(){
public:
void test1();
void test2();
}
Void test1(){
Stu stu;
stu.age=2;
stu.show();//对
}
void test2(){
Stu stu;
stu.age=2;
stu.show();//对
}
十六、继承与派生
一个派生类只从一个基类派生,这称为单继承。一个派生类从多个基类派生叫做多重派生
派生类的声明方式:class 派生类名:【继承方式】 基类名……【基类n继承方式】基类n类名{
派生类新增加成员
};
假设已经声明了一个基类Student,在此基础上通过继承建立一个派生类Student1:
class Student1:public Student{
public:
int agt;
string addr;
public:
void display();
}
继承方式包括:
public (公用的)
private(私有的)
protected(受保护的)
不写继承方式的情况下默认为private(私有的)
派生
派生类中的成员包括从基类继承过来的成员派生类新增加的成员
派生类不会吸收基类的构造函数和析构函数,派生过程为:
基类成员权限修饰类与继承方式对继承的作用
Public继承
Protected继承
Private继承
基类
private
protected
public
private
protected
public
private
protected
public
派生类
protected
public
protected
protected
private
private
由上面的表格可以知道,基类中的private修饰成员不能够继承,public继承将public继承为public、protected继承为protected,protected继承将基类中protected和public全部继承为protected,private继承将基类中的public和protected全部继承为private。
派生类的构造函数和析构函数
1.派生类的构造函数