选了很久的做上位机的软件,最后觉定用c++用mfc写上位机,很多人不推荐用MFC我也不太懂为什么,反正就是学个c++编程嘛,学会一种库其他的思想都差不多,学习起来也很快。
学习c++基本的几个函数,先做个笔记。
1.类的对象概述:简单理解一个东西的特点,比如我们资源视图里建立一个button那他肯定有,名称,类型,点击方式,等等的特点,我们把它整合在一个类似于结构体中就成为了一个类。
class CRectangle
{
private(私有类型,只能在函数类的内部调用):
unsigned int length_private;
public(共有类型,可以再类的对象被调用):
unsigned int length_public;
CRectangle(unsigned int length);(构造函数)
protect(保护类型,可以再子类中相当于共有类型,在父类中是相当于私有类型):
unsigned int length_protect;
}
如果是类内的函数是可以调用私有类型和保护类型的
CRectangle::CRectangle(unsigned int length)构造函数
{
length=length_private;可以调用的
}
class CRectangleSon:pubilc CRectangle 继承我在后面继续写,这里是说一下保护类型的用法。
{
}
CRectangleSon A_SON
A_SON.length_protect;这种使用方法是可以的
private
那我们在调用的时候只有
CRectangle A;
A->length_public=0;是可以用的,其余都不可以调用
2.构造和析构函数。
就是我们初始化一个类的对象所要调用的函数,我们不用之后就要析构重新把分配给这个对象的地址空间空出来,防止内存被沾满。
根据输入参数不一样,构造函数可以有很多,析构函数只能有一个,构造函数的名称和类名是一样的析构函数是在构造函数名称前加一个“~”
比如,
class a
{
public:
a(int b, int c);
a(int d,int e,int h);
~a();
}
其实构造函数就是一个初始化函数。析构函数就是一个删除操作就比如我要上课做一笔记,没有带笔记本,我先把我的笔记写到的一张纸上,我在这张纸上写上我的名字,笔记科目名称,这就是一个构造的过程,在后来我把这张纸上的内容写到我的笔记本上我这张纸是不是就没有作用的我把张纸扔掉这就是析构的过程。
3.方法的重载和运算符的重载
这个就更好理解了比如我两个数加法sum(int a,int b)是求a+b的值,但是我不想在名一个函数名计算 三个数加法a+b+c,对于c++没关系的 我可以在这个类中定义 sum( int a ,int b ,intc );我在地哦啊用sum函数时因为输入参数不同是没有关系的。
运算符的重载要用到 operator函数
int opertator ++(int n){n=n+2; };在这个函数中我配置我想要的运算在我的,新建的类名 (假如是 a.n++;的得到的结果及n+2的到 的值)
注意一下几个符号不允许重载
".",".*"," ::"," ?:"不要问为什么,甲鱼的臀部
4.虚函数
这个函数的我们先建立一个类
class A
{
public:
vritual voIshow();
}
class B pubilc :A
{
public:
voIshow();
}
这时我们在主函数中调用
B* Example= new A;
B->voIshow();
这时应该执行是谁的volshow函数呢?我们运行了一个B的指针,指向A的对象。这个作用我一开始也感觉没什么用,后来看了以前的资料发现早版本的MFC一些编程都是没有界面的,调用文本框都是自己写程序调用出来,MFC给了一些库但是都是无法修改的,为了能修改名称再加上可以调用子类型,改变定义文件使用
5,THIS指针
我们写程序的时候难免会遇到形参和类参数相同的情况,有时我们不方便改名字,就在形参调用的时候this->这样程序就会识别到我们到底用的是哪个参数。
class A
{
pubilc:
int x;
void test(int x);
}
void A::test(int x)
{
this->x=x;
}
这样程序就能识别形参的x和我们类里定义的x;
6 多继承, 派生类中有多个基类
注意一点调用多个基类都有的同名函数或者多个基类的派生于一个基类并且有同名函数的都要加上基类名称
class A
{
pubilc:
test_a();
}
class B
{
pubilc:
test_a();
}
class c pubilc A,pubilc B;{
}
这时我们在主函数调用 text_a这个函数是就要注意
c c_1;
c_1.A::test_a();这里调用的是A的函数 B同理。AB 同基类同理
虚继承 我一个树状图来看
爷爷
| \
儿子1 儿子2
| \
孙子1 孙子2 在孙子1,和孙子2 中同时继承了儿子继承爷爷的某个函数时在调用时就会报错这时我们定义孙子类的时候就要
class 孙子 vritual public儿子
这样在调用时就不会出错了
6 静态数据成员和静态方法
静态成员变量的定义就是跳出中断不会重新清除的数据,在一个基类中定义,在子类中改变。中在基类中的定义也会改变。
7。友元类和友元函数
在B中申请了a的友元函数那么就可以在a中调用b的函数。就是这个逻辑实际上也不太用的上就不解释。c++语言也差不多就是这么多当然这只是基础中的基础想应用起来的得心用手还有继续学习啊!