博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
需要注意的问题
阅读量:6592 次
发布时间:2019-06-24

本文共 2376 字,大约阅读时间需要 7 分钟。

数据结构:相互之间存在一种或多种特定关系的数据元素的集合

const的成员(const A a) 不能访问非const的函数
const函数不能修改其数据成员 深拷贝 和 浅拷贝? 深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝。 反之,没有重新分配资源,就是浅拷贝。 当类中成员变量需要动态开辟内存空间(即为指针)的时候,需要使用深拷贝的方式 m_pArr为指针变量。 浅拷贝:B继承A则B的指针变量指向A的指针变量申请的空间,当B释放时,A内的指针则为野指针。
Array(const Array &arr){ /// 拷贝构造函数        m_iCount = arr.m_iCount;        m_pArr = arr.m_pArr; ///两个指针指向同一块内存        cout<<"Array &"<
深拷贝:
Array(const Array &arr){ /// 拷贝构造函数      m_iCount = arr.m_iCount;      m_pArr = new int[m_iCount];      for(int i=0;i
这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。     当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。 所以,只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。 引用和指针的区别?
1.引用不能为空,初始化时必须赋值。 指针可以指向空,但不安全。 所以,使用引用的效率高,因为引用不需要验证它的合法性 2.指针可以重新赋值指向另一个不同的对象,引用总是指向初始化时指定的对象,不能改变。 string s1 = (“Nancy”); string s2 = (“Clandy”); string * p = &s1; string &r = s1; r = s2; //r仍然引用s1但是s1的值为“Clandy” p = s1;//p指向s2,s1值不变 3.指针是一个实体需要分配空间,引用是变量的别名,不会分配内存空间 4.多级指针但是没有多级引用。 5.指针和引用的自增运算不一样,指针是下一个地址,引用是变量值加一 6.sizeof(引用) 返回的是指向的变量的大小,指针返回的是自身。 7.引用访问一个变量是直接访问,指针是间接访问。 使用:当我们要指向一个对象并且不想改变其指向,或者在重载运算符时防止不必要的语义误会,使用引用。 其余情况使用指针。即可能存在不指向对象的情况,需要在不同的时刻指向不同的对象。 重载运算符举例:[]返回一个目标对象,能被赋值 vector
vec(10); vec[5] = 6; *vec[5] = 6;//如果返回的是指针,要这样写,看起来像一个向量指针。 全局变量和静态变量的区别? 1.作用域不同,全局变量可以跨文件引用(extern),静态变量只能在源文件中使用 全局变量:全局作用域,全局变量只需在一个源文件中定义,就可以作用于所有的源文件。      当然,其他不包含全局变量定义的源文件需要用extern关键字再次声明这个全局变量。 静态局部变量:局部作用域,只初始化一次。自从第一次被初始化直到程序运行结束都一直存在。静态局部变量只对定义自己的函数体始终可见 静态全局变量:全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,     即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。 2.从分配内存空间看:

  D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)

     ??? E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

sizeof 和strlen的区别?
小知识点:             strlen() 和 sizeof() char* p = "abcde";        5      4 char p[10] = "abcde";       5      10 char p[] = "abcde";        5      6 strlen():计算字符串的长度,以\0'为字符串结束标记。 sizeof() :计算的则是分配的数组所占的内存空间的大小,不受里面存储的内容影响 区别: 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。  该类型保证能容纳实现所建立的最大对象的字节大小 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。  sizeof还可以用函数做参数为函数的返回类型所占的空间大小。函数的返回类型不能是void。 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了 5.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数 6.sizeof在编译的时候计算过了
 

转载于:https://www.cnblogs.com/Lune-Qiu/p/9009075.html

你可能感兴趣的文章
警告 初始化默认驱动器时出错“找不到运行 Active Directory Web 服务的默认服务器。”...
查看>>
JS字符串转换数字
查看>>
centos7-修改主机名
查看>>
面试宝典系列-mysql面试基础题
查看>>
spring data for mongo
查看>>
开启 URL 重写
查看>>
Journey源码分析二:整体启动流程
查看>>
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
查看>>
七、MySQL中的字符集 - 系统的撸一遍MySQL
查看>>
centos7的php5.4竟然不支持原生的mysql
查看>>
使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
查看>>
ajax加载数据到页面无法打印的解决办法
查看>>
js 验证中文
查看>>
Linux下运行java DES AES加解密
查看>>
DataNode 运行状况
查看>>
牛津词典 2018 年度词汇 ——「有毒」!
查看>>
XIB的是用
查看>>
Learning Data Structure_2_线性表、栈和队列
查看>>
Android Arcface人脸识别sdk使用工具类
查看>>
android studio单个工程文件的代理设置
查看>>