c++前半部分总结
来源:互联网 发布:怎样修改淘宝评价 编辑:程序博客网 时间:2024/06/01 09:24
构造函数:与类同名的特殊成员函数,主要用来初始化对象的数据成员。定义形式如下:
class
·
X(·
}
特点没有返回值,可以重载,由系统自动调用,不允许在程序中显示调用。
例:
#include
using
class
{
public:
X()
{
cout
}
};
void
{
X
system("PAUSE");
}
析构函数:与类同名的另一类特殊成员函数,作用有构造函数相反,用于在对象生存期结束时,完成对象的清理工作。如用delete删除对象分配的自由空间。定义形式:
class
·
Public:
~X();
·
}
特点:加“~”,没有返回类型,没有参数表,不能重载,一个类只能有一个析构函数,由系统自动调用,不能在程序中显示调用析构函数。
例:
#include
using
class
{
private:
int
public:
X(int
{
i
cout
}
~X(){
};
void
{
X
X
X
system("PAUSE");
}
向函数传递对象,传值、传引用、传指针
#include
using
class
{
private:
int
public:
X(int
int
void
};
void
void
void
void
void
{
X
display(a);
change1(a);
display(a);
change2(a);
display(a);
change3(&a);
display(a);
system("PAUSE");
}
protected和继承
Protected可以用来设置类成员的访问权限,成为保护成员。主要用于继承,对于一个不被任何派生类继承的类而言,protected访问属性与private完全相同。而在继承结构中,基类的protected成员虽然不能被派生类外部函数访问,却能被其派生类直接访问。
#include
using
class
private:
int
protected:
int
public:
int
};
class
public:
void
i
j
k
}
};
void
{
B
b.i
b.j
b.k
}
继承方式
C++继承的形式
class
派生类成员声明与定义;
}
继承方式可以是public,protected,private,如果省略继承方式,c++默认是private。派生类成员的定义与普通类定义方式相同,但它们可以访问基类的public和protected成员。
公有继承:继承方式为public,基类成员的访问权限在派生类中保持不变。
私有继承:继承方式为private,基类private仍是private,但基类public和protected变为private。
保护继承:继承方式protected,基类public变为protected,基类protected仍是protected,基类private仍是private。
例:
#include
using
class
{
int
public:
void
int
void
};
class
{
int
public:
void
void
void
};
void
{
Derived
obj.setx(10);
obj.showx();
obj.sety(20);
obj.showy();
obj.sety();
obj.showx();
obj.showy();
system("PAUSE");
}
成员函数的重定义和名字隐藏
派生类不仅可以添加基类没有的成员,也可以对基类的成员函数进行重定义和重载。
#include
using
class
{
int
public:
void
void
void
};
class
{
int
public:
void
void
Base::set(i);//调用基类成员函数set()
m
}
void
Base::print();
cout
cout
}
};
void
{
Derived
d.set(1,
d.print();
d.set(5,
d.print();
d.Base::print();
d.setx(8);
system("PAUSE");
}
派生类的构造函数除了要负责本类成员的额初始化外,还要调用基类和对象成员的构造函数,并向它们传递参数,以完成基类子对象和对象成员的建立和初始化。
例:
#include
using
class
{
int
public:
Base(int
{
x
cout
}
~Base(){
};
class
{
int
public:
Derived(int
{
z
cout
}
~Derived(){
};
void
{
Derived
system("PAUSE");
}
关于虚函数virtual,基类A,由A派生出B,再由B派生出C。如果不用虚函数,类型为派生类的指针不能访问基类的内容,类型为基类的指针在指向派生类时,不会访问派生类,只会访问到基类的内容;当使用虚函数virtual后,类型为派生类的指针照样不能访问基类,而类型为基类的指针在指向派生类时,不会再去访问基类的内容,而是去访问该派生类的内容。
#include
#include
using
class
public:
void
};
class
{
public:
virtual
};
class
{
public:
void
};
void
{
A
B
C
pB
pB->f(1);
pB
pB->f(1);
system("PAUSE");
}
派生类中的虚函数要保持其虚特性,必须与基类虚函数的函数原型完全相同,所带的参数个数,参数类型都必须相同,否则就不是虚函数,而是函数重载。
虚析构函数,构造函数和析构函数与所在类的名字相同,按理不符合虚函数,但是存在虚析构函数(不存在虚构造函数)。可以通过基类类型的指针访问派生类的析构函数,使析构彻底。
#include
using
class
{
public:
virtual
};
class
{
char
public:
B(int
~B()
{
delete[]
cout
}
};
void
{
A*
delete
system("PAUSE");
}
纯虚函数和抽象类
有时候定义一个类不是为了建立对象,而是把它作为派生其他类的基类,通过此基类访问派生类对象。纯虚函数的形式:
class
......
Virtual
}
纯虚函数在基类中声明,但它基类中没有具体的函数实现代码,要求继承它的派生类为纯虚函数提供实现代码,该基类不能建立对象,称为抽象类。C++对抽象类的限定:
1.抽象类中有虚函数,没有实现代码,不能建立对象。
2.抽象类只能作为其他类的基类,可以通过指针和引用访问它的派生类对象。
3.如果一个派生类只是继承了抽象类的纯虚函数,而没有重新定义基类的纯虚函数,则派生类也是一个抽象类。
#include
using
class
{
protected:
double
public:
void
virtual
};
class
{
public:
void
};
class
{
public:
void
};
void
{
Figure
Triangle
t.set(10,
pF
pF->area();
Figure
rF.set(20,
rF.area();
system("pause");
}
- c++前半部分总结
- 软工视频总结(前半部分)
- 离散数学结构第一章前半部分书摘,总结
- Head First C (前半部分)读书笔记
- C语言部分总结
- css3动态前半部分
- 利用子进程拷贝文件的前半部分,副进程拷贝后半部分C代码
- iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
- C/C++部分库函数总结
- 关于c的部分总结
- C语言数据类型部分总结
- c/c++部分知识总结
- C语言指针部分总结
- java--IO流(前半部分)
- C/C++ 面试前 遇到问题总结
- 《Effective C#》Part I:第一部分总结
- 《Effective C#》Part II:第二部分总结
- C/C++ 指针部分总结1
- 自从得了神经病,整个人都精神多了
- 喝一口肾没了:全球最贵10款矿泉水
- 第五课、格式化字符串
- 10中经济有好玩的约会方式
- 555低电平出发定时器
- c++前半部分总结
- 我们的生日花
- 放大电路中的反馈
- RC正弦波震荡电路
- 2015年01月28日
- C51_LCD1602显示(防忘)
- AndroidManifest.xml的意义
- PIC18F452单片机 矩阵键盘
- PIC LCD1602显示