从C语言到C++(部分)

Float/double类型:默认情况下,只输出六位有效数字。

水平制表符  \t  有对其效果,一共占八位

字符串:在c++中字符串的创建方式和c中相同,但也有独有的方式:使用sting创建字符串,但是需要头文件<string>

数据的输入:cin>> 接受的变量名 且字符串可以直接覆盖掉之前的

Const int* p = &a   可以修改指向,不可以修改变量   

int* const p = &a   可以修改变量,不可以修改指向    

关键字:new     在堆区创建,相当于malloc

语法:   变量类型*  变量名 = new 变量类型(值)

此时:*p = 10

创建数组:使用中括号

释放:delete关键字

引用:

1.使用时必须初始化 2.初始化后,不可改变(不可指向另一个变量)

如: 1.   int &b;

        2.   int a=10; int &b = a;  int c=20;  int &b=c;

均是错误示例。

使用示例:

同样可以实现a和b值的交换  实现和传地址一样的效果

说明:

不能返回局部变量的引用

第一次ref为10 第二次ref为a的地址

如果函数做左值,那么必须返回引用

用const修饰变量:const int& ref = 10;

相当于int temp = 10;const int& ref = temp;

函数可以有默认值

如:

注意事项:1.函数在调用的时候可以给有默认参数的形参传值,此时形参为传递的值

2.如果函数的某个位置有默认值,那么该形参往后的形参都要有默认值,如上图示例:不可以只给b赋值,而不给c赋值

3.函数的声明和实现中只能有其中一个有默认值,不可以两者同时有

函数重载:函数的名称相同,但是作用不同,提高复用性

需要满足的条件:1.同一个作用域下

2.函数名称相同

3.函数参数的类型不同或者个数不同或者顺序不同

但是函数的返回值不可以作为函数重载的条件

1.引用作为函数重载的条件:

(1).a作为变量

(2).相当于const int &a = 10;语法正确

            而int &a = 10;语法错误

2.函数重载碰到函数默认参数,如

不能这样调用函数

重点来哩

类:class               类似于结构体

示例:设计一个类计算圆的周长

class Circle(类名)

{

     (访问权限)public:

     (属性)int m_r;

     (行为,通常为一个函数)

     double calculate()

{

     return 2*pi*m_r;

}

};

Circle c1;

C1.m_r = 10;

cout << “圆的周长为 ” << c1.calculate() << endl;

封装权限:

公共权限:public  类内和类外都可以访问

保护权限:protected  类内可以访问,内外不可访问。子类可以访问父类的保护权限。

私有权限:private  类内可以访问,内外不可访问。子类不可访问父类的私有权限。

struct默认为公共权限,class默认为私有权限。

成员属性设置为私有的优点:

1.可以自己控制读写权限

2.对于写权限,我们可以检测数据的有效性

此处的return没有返回值,作用为结束函数

利用成员函数来判断两个立方体是否相等

构造函数和析构函数:

构造函数:

1.没有返回值,不用写void

2.函数名与类名相同

3.构造函数可以有参数,可以发生重载

4.创建对象的时候,构造函数会自动调用,而且只调用一次。

析构函数:进行清理的操作

1.没有返回值,不用写void

2.函数名和类名相同,在名称前加~

3.不可以有参数,不能发生函数重载

4.对象在销毁前,会自动调用析构函数,而且只调用一次。

构造函数的分类:

按照参数类型:有参构造和无参构造(默认构造)

按照类型分类:普通构造和拷贝构造

调用:

1括号法

注意:默认构造函数调用后不能加()。

2显示法

注意:不要利用拷贝函数初始化匿名对象

3隐式转换法

构造函数调用规则:

1若一个函数都不写,编译器添加三个函数

2只写析构函数,编译器只提供拷贝函数

3只写拷贝函数,编译器不提供其它

析构函数的作用:若在构造函数在堆区开辟了空间,空间需要在析构函数中释放,但是由于同时调用了拷贝函数(浅拷贝),拷贝函数在结束时再次调用了析构函数,空间释放了两次,此时代码出现问题。

解决方案:使用深拷贝,即在拷贝函数中手写在堆区中开辟内存,存放变量,这样变量在堆区有两块内存,释放的时候可以把两块分别释放。

初始化列表:

固定式:

传参式:更灵活

当类1作为另一个类2的成员时:类2在使用时,构造函数:类1先,类2后;析构函数的顺序则相反。

静态成员变量:

1 在编译阶段分配内存

2 类内声明,类外初始化

3 所有对象共享同一份数据

两种访问方式:通过方式和通过类名

但是如果对象是私有权限,则在类外也访问不到

静态成员函数:同样可以通过对象和类名访问函数

1 程序共享一个函数

2 静态成员函数只能访问静态成员变量

若类内的对象为空,则类的大小为1个字节:

C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置,每个空对象也应该有一个独一无二的地址。

如果对象有一个非静态的int类型变量,此时内存为4。

如果对象为静态成员变量或函数(静态或非静态),此变量不属于类的对象。

this指针:

1.解决形参和实参同名的问题,this指针指向 被调用的成员函数 所属的对象,如:

this指针指向p1.

2.返回对象本身

注意函数的返回值为:类名+& 才能返回对象本体

若无&,则返回的是和p2值相同的一个值,p2不会发生改变

带有&时:返回值40    不带&时:返回值为20

空指针访问成员函数:

空指针可以调用不含变量的函数。在showPerson函数中,m_Age其实为this.m_Age,而传入的指针为空,因此this不能指向m_Age.

常对象和常函数:

读取一行的字符串:getline(cin,s)

字符串的长度:s.length().

Substr函数:s.substr(n,m)

截取字符串的子串,从下标为n开始,到m结束,若m省略则表示直到结束。

动态数组:vector  头文件:#include<vector>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值