简介:本文章主要从面向对象编程的三大特点来叙述:封装、继承、多态;
1) struct 和 class 在C++中唯一的区别就是默认的访问权限不同,struct默认访问权限是public的,而class是private的;
2) 一个类中如果定义了全是默认参数的构造函数,那么就不能再定义重载函数了。(二义性)
3)静态成员 静态成员是类的成员,而不是某个对象的成员,类的静态成员拥有一块单独的存储区,不管创建了多少该类的对象,静态成员都是唯一的一个,共享的,这就为不同的对象提供了一种相互通信的办法(与不同进程间共享内存的进程通信方式类似)。注意 :静态成员的定义必须出现在类的外部且只能定义一次,所以在头文件中定义静态变量容易引起重复定义的错误;无论是基类还是派生类都可以改变静态变量的值,说起来挺复杂,其实代码表述简单的多:
#include<iostream>
using namespace std;
class Base{
//定义的基类 Base
public:
static int var;
};
int Base::var=10;
class Derived:public Base{
}; //派生类是空的,直接继承
int main(){
Base base1;
base1.var++;
cout<<base1.var<<endl;
Base base2;
base2.var++;
cout<<base2.var<<endl;
Derived derived1;
derived1.var++;
cout<<derived1.var<<endl;
Base::var++;
cout<<derived1.var<<endl;
return 0;
}
内存的占用: 类的一般数据成员是不占用内存空间的,只有在定义对象时才会为对象的数据成员分配空间。但是类的静态数据成员不属于某一个对象,在所有对象之外单独开辟一段内存来存放。
静态成员函数: 与普通成员函数的根本区别是:非静态成员函数有 this 指针,静态成员函数没有 this 指针。静态成员函数一般是用来处理静态数据成员的,因为静态数据成员不属于某一个对象,所以不能用 this 指向静态数据成员,只能用静态成员函数来处理;
4)对象的存储空间: 一个比较