(1)C:面向过程:数据+算法
C++: 面向对象:对象+消息
面向对象的优点:可以提高代码的扩展性,复用性,维护性 ,灵活性
缺点:运行效率不高,运行效率会下降10%左右
代码和代码之间,功能和功能之间相互独立
(2):面向对象的特点
:
1.封装:提高代码的维护性
2.继承:提高代码的复用性
3.多态:提高代码的扩展性
4.抽象:提高代码的灵活性
注:如果说三大特点就说前三点
(3):类和对象
类是解决封装
类是对象的抽象,对象是类的一个实例
类(动物) 对象(老虎,狮子,兔子)
(4):类的作用域属性:public private protected(成员访问限定符)
public:公有的,在类外可以通过对象的方法访问
private:私有的,不能在类外通过对象的方法访问,可以在类内访问
protected:保护权限,在没有继承的条件下,同private的访问权限
(5)类示例:
class Test //Test类名习惯大写
{
public:
//嵌套类:在类中又定义了一个类
class InnerClass
{
public:
void Display(); //在类内声明函数,在类外定义
private:
int x_;
};
/*inline*/void Display()
{
cout << "x_ " << this->x_ << endl;
}
//通过类内的接口函数来操作类内的private定义的成员变量
//还可在接口函数中设置入口参数检查来保障安全使用
void SetX(int x)
{
if(x > 10)
{
}
x_ = x;
}
void Func(Test& t)
{
if(this == &t)
{
cout << "me" << endl;
}
else
{
cout << "other" << endl;
}
}
private:
int x_;
};
注意点:
1.一般在类内实现的函数(不包括循环等控制语句)系统将其默认为内联函数,大大减少了调用成员的时间开销,但很占用内存,所以一般成员函数都是在类内声明函数,在类外定义函数,这样系统就不再把成员函数默认为内置函数了
2.类的声明放在.h文件中,类的定义放在类的.cpp文件中,在类外实现的函数不再默认是内联函数
3.在类内声明的函数不需要全都实现
4.用类实例对象后,对象的大小由属性(数据成员)决定,对象的方法被共享(每个对象所占的内存空间只是对象数据成员所占的内存空间,而不包括函数代码所占的内存空间),通过this指针保存对象的地址,这样当操作共享的对象的方法时才知道是哪个对象在执行方法
注意:类中的静态成员函数(static修饰的)没有this指针
this指针:指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址,可以用(*this)来表示被调用的成员函数所在的对象
(6)嵌套类:在类中再定义一个类
(7)局部类:在main()函数中定义的类,只能在类内去实现方法,局部类不能有静态成员和静态方法
()结构体和类
gcc编译器下结构体中只能存放变量,不能存放函数
g++编译器对结构体有升级,可以在结构体中存放函数
g++编译器下结构体和类几乎一模一样
()前向声明:在一个类中只能定义另一个类中的指针和引用,不能出现前向声明的对象(即在一个类中不能再定义另一个类的对象),如果想要在一个类中定义另一个类的对象时,必须要添加头文件(但代价比较大,加载的代码量比较大)