C++入门

从C到C++:

首先来了解一下概念:如果学习过java可以和java来对比学习

引用:

类型名 & 引用名=某变量名

int n=4; int & r=n; //r引用了n,r的类型是int &

引用只能引用变量,不能引用常量或者表达式

引用的理解可以参考java中的引用,实际上他们都是使用不同的名字去操作同一个地址的值

eg:可以利用引用来交换值

引用作为函数的返回值:可以通过函数的调用来实现对变量的修改

引用前面加上const,就是常引用(不能通过常引用去修改它所引用的值)

 

const关键字:

用来定义常量,它可以代替define,因为,const有类型,所以可以确保安全

定义常量指针:不可通过常量指针来修改其指向的内容

        常量指针不能赋值给非常量指针(通过强制转换可以实现)

        非常量指针能赋值给常量指针

 

动态内存分配:

方法一:

    P=new T;

T是任意的类型名,P是类型为T* 的指针,动态分配出一个大小为sizeof(T)字节的内存空间,并且将该空间的起始地址复制给P

方法二:

    P=new T[N];

P还是类型为T *的指针

 

通过delete释放变量空间

delete 指针:该指针必须指向new出来的空间

通过delete释放分配的数组空间

delete [] 指针:该指针必须指向new出来的数组

new出来的空间必须通过delete来删除,不会自动调用析构函数(后面会有讲解)

 

内联函数:

编译器处理内联函数的语句时,是将整个函数的代码插入到调用语句处,而不产生调用函数的语句

在函数的定义前面加“inline”

 

函数重载:

名字相同,参数个数或者参数类型不同 

定义函数时可以让最右边的连续若干个参数有缺省值

 

类和对象:

类定义出来的变量,也成为类的实例,就是我们所说的对象

对象的大小只包含它的成员变量的大小

 

成员:

类的成员函数可以和类的定义分开来写,在类的里面要写这个函数的声明

类成员的访问范围:

private:私有成员,只能在成员函数内访问

public:公有成员,可以在任何地方访问

protected:保护成员

如果前面没有标注,则默认为私有的

成员函数可以重载及参数缺省

 

构造函数:

和java构造函数相似,名字相同,没有返回值

对象生成时构造函数自动被调用

 

复制构造函数:

只有一个参数,就是同类对象的引用,如果没有定义复制构造函数,那么编译器就会默认生成复制构造函数,它的功能就是来完成复制功能

eg:

使得c2==c1,起始它会返回该类的引用给c2

还有一种写法 Complex c2=c1;和上面的写法是相似的

 如果一个函数的参数时类A的对象,那么该函数调用时,类A的赋值构造函数将会被调用,起始就是形参作为引用指向实际参数所指向的地方

如果函数的返回值是类A的对象,则函数返回时,A的赋值构造函数被调用

对象赋值并不导致赋值构造函数被调用

 

类型转换构造函数

定义转换构造函数的目的是实现类型的自动转换

实际上就是 c1=9 时,9被自动的转换为一个对象,调用的就是Complex(int i)这个构造参数,然后创建了一个Complex的临时对象,再将这个对象赋值给c1

 

析构函数:

名字和类名相同,在前面加'~',没有参数,没有返回值,一个类最多只有一个析构函数,析构函数在对象消亡的时候被自动调用

对象数组生命周期结束时,对象数组的每个元素的析构函数都会被调用 

eg:

 

注意:new出来的东西只有delete了才会消亡,否则不会消亡,就不会调用析构函数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章