C++学习总结

来源:互联网 发布:淘宝优惠卷网站源码 编辑:程序博客网 时间:2024/06/07 01:49
1、值传递、引用传递、指针传递的优点和缺点
(1)值传递
 优点:
  • 可以传递变量、数值和表达式
  • 参数不会被修改
 缺点:
       传递如结构体、类,需花费很长的时间。

(2)引用传递
 优点:
  •   允许函数修改参数的值,有时非常有用
  • 引用不涉及到复制参数的信息,较快
  • 可以传递常量引用,防止无目的的修改
  • 可以返回多个值
 缺点:
  • 非常量引用不能是数值和表达式,只能是变量
  • 比较困难清晰说明穿打底的引用是输入、输出还是两者皆是。
  • 不能从函数调用确定函数是否被修改;
(3)指针传递(地址传递)
典型应用:内存动态分配和数值访问

优点:
  • 允许函数改变参数的值
  • 因为不进行拷贝,速度较快
  • 可以返回多个值
缺点:
  • 参数不能为数值或表达式,必须是正常的变量
  • 所有参数必须检查是否为空指针
  • 较值传递慢
2、返回值是值、引用和地址

值、引用和地址的返回给函数调用几乎是一样的。

1)值返回是最简单和最安全的方式:

返回的变量或表达式可以包含函数声明的局部变量;

对于结构体和类对象是比较慢的;

2)引用返回

引用返回必须是变量,调用者可以继续使用该引用修改变量,很多时候是比较有用的,而且比较快速;

注意不能返回函数的局部定义的变量引用:


3)地址返回

地址返回只能返回变量的地址,不能是数值和表达的;

地址返回也是比较快速的,不能返回局部变量的地址;

若返回的是调用函数的局部定义变量的地址,编译器会产生警告信息的;

地址常用之一就是返回新的分配内存给调用者:

小结:

一般值返回是足够使用的,足够灵活和安全;

引用返回和地址返回是比较有用的,特别是针对结构体和类对象的动态分配地址;

注意在引用返回和地址返回时,确保返回的不是函数自定义的局部变量的引用或地址。


3、类和结构体的区别

  • 类的成员可以使用标识符来控制它们的可访问性
  • 结构体默认访问级别是public,类的默认访问级别是private
4、封装

封装的思想就是将实现细节隐藏,而暴露公有接口。

C++中的访问标识符,可以实现在类中的封装,通常将所有的成员变量私有化


5、析构函数

普通的简单类,一般不需要析构函数;因为C++会自动回收垃圾;

如果类中执行了某些动态内存分配,则需要显式定义析构函数,并释放回收垃圾;

析构函数的明确命名规则:

A)函数名和类名一样,并前缀'~';

B)不能带参数(即意味着只有一个析构函数);

C)没有返回类型。

6、常量类对象和常量成员函数

函数的参数可以为常量对象,如内置的基本数据类型一样,类对象也可以声明为常量,所有常量对象的变量必须在创建时初始化,其后不能修改。

上图3个错误,因为程序试图修改常量类对象的变量;


因为常量类对象不能调用非常量成员函数;

常量成员函数-保证不修改任何类变量或调用任何非常量函数

为了使GetValue常量化,可以在其原型加个const关键字:


注意:

A) 常量成员函数在类外定义时,也必须加const关键字;

B) 任何常量成员函数试图修改类成员变量,或者调用非常量成员函数都是非法的,会产生编译错误。

C) 构造函数不能常量化;


如果同时在类中,对于函数名相同的const函数和非const函数能够构成重载,同时它们被调用的时机为:如果定义的对象是常对象,则调用的是const成员函数,如果定义的对象是非常对象,则调用重载的非const成员函数。


原创粉丝点击