C++之学后感

来源:互联网 发布:求矩阵的特征向量 编辑:程序博客网 时间:2024/05/16 10:03
相信很多人学C++都会觉得难,这应该是一个普遍的现象,BDW,我说的是一般人,而不是那种聪明人,我是学了java再学C++的,也有c的底子,虽然学起来要轻松点,但还是觉得C++里面的语法太多了,下面我就来就我的理解来介绍一下C++(纯属个人意见):大家在学C的时候肯定学到了结构体,也就是用struct,例如,我们来定义一个最简单的栈和作用在它之上的一组操作,看代码typedef struct{    int *top;//栈顶    int *base;//栈底    int stacksize;//栈的大小}sqstack;

下面来看栈的一组操作,入栈:

void push(sqstack *s, int a){    if (s->top - s->base < s->stacksize)    {        s->top++;        *s->top = a;    }    else        printf("can not do it!");}

上面的最简单的入栈操作,分析上面的代码可以看出什么呢?

你看,每次调用这些方法都要将sqstack这个结构体当作实参传进去,而且这些方法根本没有起到别的作用,只是将数据存进这个结构体中,所以
伟大的C++之父本贾尼先生会这样想(当然这是我自己想的,至于本贾尼先生到底怎么创建出类的概念我就不知道了),既然这些入栈的方法都只是用来操作栈这个数据结构的额,为什么不将这些方法直接定义在struct这个结构体里面呢,以后想要入栈的话直接调用这个方法就行了,而不用将结构体作为形参传进去了,再参照一下现实世界中的事物,于是类(在C++中struct和class两个关键字都是定义类的,唯一的区别就是struct定义的如果没有访问修饰符默认是public,class定义的默认为private)这个概念出来了,它里面有属性和方法,好了,现在类有两个成员,一个是属性,一个是方法,接下来介绍一下构造器。

构造器:
构造器的作用是当一个类初始化的时候为它的属性也初始化,例如人是一个类,当一个人出生了,这就相当于类的实例化,而出生的时候他就会附带一些属性,例如,他又多重,他有几条腿等等,这些是类刚刚实例化的时候所附带的属性,所以构造器就是这样用的,当然,构造器的本质还是一个匿名的方法,只有在类实例化的时候被动调用,不会被主动调用。所以类的实例是对象,对象的抽象是类。

重载运算符:
相信大家刚刚看到std::cout << “hello, word!” ;的时候跟我一样感到难以理解,现在我就按照我自己的理解来介绍一下重载运算符吧,大家都在c语言里面学过 <<是什么意思,左移和右移运算符,例如:
8 << 1的值为8*2=16;
8 << 2的值为8*(2^2)=32;
8 << n的值为8*(2^n)。
这是左移,右移是除以2^n次方,<< 左边是基本数据类型,右边是要乘以2^n,这个时候又有一个问题出来了,类也是数据类型,如果对它使用左移运算符会怎样,所以C++语言就引进了重载运算符的概念,重载运算符的形参里面至少有一个是类的实例,不能全部是基本数据类型,所以说重载运算符是为了弥补这些操作符不能用来运算复杂数据类型的。

2 0
原创粉丝点击