c++——基本概念
- 如何理解c/c++中的指针?每种编程语言都使用指针,但Java、c#等将指针隐藏,而c/c++将指针暴露给了用户(程序员)https://www.cnblogs.com/gxcdream/p/4805612.html
- 如何理解符号表?记录变量名及变量对应的地址。在编译时生成,生成后不可改
- c++中的内存有哪几种?如何分配?存储什么内容?静态存储区、栈存储区、堆存储区。静态存储区在编译时分配,在程序的整个运行期间都存在,存储全局变量、static变量;栈区函数执行时分配,在函数运行期间存在,存储函数中的临时变量;堆区由程序员自己分配,自己删除
- 栈内存和堆内存的区别?栈内存保存堆内存的地址,堆内存保存真正数据
- 内存中供用户使用的存储空间划分为哪几部分,分别存储什么类型的变量?程序区、静态存储区(全局变量)、动态存储区(函数形参、自动变量等)
- 成员变量(Fields)、参数(parameter)和本地变量(Local Variable)的区别?参数和本地变量相同,存储在栈中。成员变量在类中定义,本地变量在函数中定义。作用域:成员变量在类的所有函数中都可直接用,本地变量在本函数中使用;生命周期:成员变量在对象的生成期中永远存在,本地变量随函数存在。(成员变量在类的每个对象中,一般为私有,不能通过.访问)
- public、private、protected的区别?public:共有;private:私有,只有该类的成员可访问;protected:保护,只有该类及其子类的成员可访问
- 变量和函数在声明时的两个属性是什么?数据类型(整型、字符型),数据存储类别(在内存中存储方式,分静态、动态两类,根据存储类别可知变量的作用域与生存期)
- 变量根据作用域可分为哪两类?局部变量(在函数内部定义)、全局变量(在函数外部定义)【空间】
- 变量根据生存周期(存储类别)可分为哪两类?静态(程序运行期间由系统分配固定的存储空间)、动态(程序运行期间根据需要动态分配存储空间)【时间】
- 声明(declaration)和定义(definition)的区别?对于函数区别明显;c中,对于变量,声明包括定义(如int a;),但并非所有的声明都是定义(如extern a;),一般把需要建立存储空间的声明称为定义,不需建立存储空间的声明称为声明;c++中,类的成员变量就是声明,而非定义,因为没有分配内存(声明:(告诉编译器)知道有一个i,但不知道在哪里;定义:i在这里)
- 初始化和赋值的区别?初始化指在创建变量时赋予其一个初值,赋值指把对象的当前值擦除,以一个新值代替之
- .h文件和.cpp文件的区别?https://zhidao.baidu.com/question/554429813.html
- c++中作用域如何分隔?以“{}”分隔
- ::是什么意思?域解析符(也称作用域运算符或作用域限定符),用来连接类名和函数名,指明当前函数属于哪个类
- ->的含义?取成员,通过结构体(类)指针取得结构体(类)的成员(可读成“的”)
- &和*的含义?由上下文决定。在声明语句中,&为引用,*为指针;在表达式中,&为取地址,*为解引用
- 介绍c++中两种主要的复合类型及其区别?引用、指针。引用与变量绑定,不是对象(一旦绑定,无法改变),必须初始化(引用是某块内存的别名,程序不会为引用分配内存);指针指向,是对象(允许赋值、拷贝),可以不初始化(指针指向一块内存,其内容是所指内存的地址)。
- 指针的使用有何注意事项?未经初始化的指针会引发错误,尽量等定义了对象后再定义指向它的指针
- 如何理解c++的分离式编译机制?将变量的声明与定义分离的机制。声明规定了变量的类型和名字,即使一个名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。定义则负责创建与名字关联的实体,以及申请存储空间。将声明和定义分离,可方便将程序分为许多文件,并在文件中共享代码
- int (*p)(int,int)与int *p(int,int)的区别?前者为函数指针,p是指向函数入口地址的指针变量(地址);后者为指针函数,*表示函数p的返回值是指向整型变量的指针
- int (*p)[4]与int *p[4]的区别?前者为数组指针,p为指向一维数组的指针变量(地址);后者为指针数组,*代表数组p的每个元素均为指向整型变量的指针
- int p[4]与int (*p)[4]中p的区别?前者中p为数组首元素地址;后者中*p为数组首元素地址,p为双重指针
- 数组名和函数名各代表什么?数组名代表数组首元素的地址,函数名代表函数的入口地址
- 什么是虚函数?通过指针调用派生类的成员函数,实现多态
- 句柄和指针的区别?https://blog.csdn.net/perfectguyipeng/article/details/71189822
- 函数的参数传递有哪两种机制?引用传递(passed by reference)、值传递(passed by value)。形参为引用类型时,与实参绑定;否则,将实参的值拷贝给形参
- 什么是函数模板?合并名字相同,参数不同的函数,方便实现函数重载和泛型
- 程序错误有哪几类,如何避免?语法错误(编译)、逻辑错误(调试)、运行错误(异常机制)
- 创建对象有哪两种机制,有什么区别?https://www.cnblogs.com/techyc/p/3257575.html
- 对象的创建包含哪两个阶段?1、分配内存;2、初始化(调用构造函数)
- 多态的实现方式:函数重载、运算符重载、虚函数。前两种编译时实现,后一种在运行时实现
- 什么是宏?一种替换机制(批处理),在预处理阶段展开,程序随之变长
- C/C++的预处理功能有哪几种?宏定义,文件包含,条件编译(满足条件了才编译)
- 什么是构造函数?用于对象初始化,创建对象时自动调用,没有返回值
- 什么是析构函数?与构造函数相对,销毁对象时系统自动调用。进行清理工作,例如释放分配的内存、关闭打开的文件等。没有参数和返回值
- 什么是内联函数,如何声明?为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。可将短小的、频繁调用的函数声明为内联函数。声明函数时加关键字inline
- 什么是局部变量和外部变量,如何声明?static,extern
- 什么是内部函数和外部函数,如何声明?二者区别:能否被其他文件调用。内部函数:只能被本文件中的其他函数所调用,即作用域仅局限于所在文件。通过static声明;外部函数:可被其他文件调用。通过extern声明(默认)
- 函数的声明和定义在语法上如何区分?声明没有{}
- auto在c中有什么用法?函数中的局部变量如果不声明为static,默认为auto即动态分配存储空间,函数结束后释放
- static在c中有什么用法?对局部变量使用,可使变量在整个程序执行期间不释放;对全局变量使用,可使变量的作用域限于只限于本文件(模块)中
- extern在c中有什么用法?外部变量是在函数外部定义的全局变量,作用域是从变量定义处到文件末尾。如果定义点之前的函数想引用该变量,要在引用前用关键字extern对变量作“外部变量声明”,以扩展其作用域
- extern在c++中有什么用法?(https://www.cnblogs.com/broglie/p/5524932.html)为方便分离式编译,如果想声明一个变量而非定义它,就在变量名前添加extern关键字。将一个变量声明为extern就表示承诺在程序的其他位置有该变量的一个非extern定义。一个给定的变量可能有多个extern声明,但必须只有一个定义
- struct和class的区别?https://www.cnblogs.com/ccsccs/articles/4025215.html
- include" "和< >的区别?前者在.cpp所在目录找,后者在系统目录找
- 类的组成?成员变量和成员函数,类不是实体,只有实体才有变量,变量是属于对象的,不属于类,函数是属于类的,不属于对象。所有类的对象用到的函数是同一个,而类的变量只有创建对象时才会产生。当不同的对象调用同一个函数的时候,编译器可以知道是哪个对象在调用它,并把变量与之关联上(通过this实现)
- 创建对象的两种方式?有什么区别?在栈上创建和在堆上创建。在栈上创建对象使用“类名 对象名”创建,对象在离开作用域后自动删除,使用"."访问对象的的方法;在堆上创建的对象使用“类名 对象地址 = new 类名”创建,对象需使用delete手动删除,使用"->"访问对象的方法 https://www.cnblogs.com/techyc/p/3257575.html
- 什么是对象?一块能存储数据并具有某种类型的内存空间
- 类的基本思想?如何实现?数据抽象和封装。通过接口和实现分离实现
- 基本内置类型包括哪几类?算数类型(又分为字符、整型、布尔、浮点)和空类型
- 类的静态成员有何特点,如何使用?类的静态成员不与对象绑定,必须在类的外部定义和初始化
- 声明语句的组成?基本数据类型+声明符
- const的用途?修饰变量,以说明它是不可变的
- 函数由哪几部分构成?返回类型、函数名字、形参列表、函数体
- 什么是函数重载?同一作用域内的几个函数名字相同但形参列表不同
- VS、VC、MFC是什么?VS >VC >MFC 微软基础类库(Microsoft Foundation Classes)
- 什么是MSDN?微软开发者网络(Microsoft Developer Network),VS的帮助文档
- 什么是GDI?图形装置界面(Graphic Device Interface)
- 如何理解设备描述表?https://blog.csdn.net/wenzhou1219/article/details/22325247
- "?"的用法?三目运算符,a?b:c 代表首先对表达式a进行判断,True则返回b,False则返回c
- friends的用法?一旦声明其他类为friends,这个类就可以访问本类的私有成员。可用于运算符重载
- c++中class和struct的区别?class默认private(常用),struct默认public(用于简单类)
- 初始化列表和构造函数初始化的区别?初始化列表是初始化+赋值;构造函数只赋值。实际使用中通常通过初始化列表完成初始化
- 对象组合的用法?是一种软件重用的方式(composition)[另一种是继承],把已有对象组合成一个新的对象,一个类的成员变量是另一个类的对象;fully——一部分[孩子出生前];by reference——知道在哪(指针)[孩子出生后];从语义上理解,定义一个员工类,员工的姓名,工号是fully对象,员工的上级是by reference的员工类对象
- 如何理解c++的内存模型?提供fully和by reference两种方式(指针对编译器来说就是地址,不需要知道指向的细节)。java中只有by reference
- 如何实现规范编码?语言可提供灵活的手段,但实际使用中要受编程模型的限制(如OOP),以保证编码的规范可扩展性
c++——基本概念的更多相关文章
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...
- 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS
需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 【Linux大系】Linux的概念与体系
感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...
- KOTLIN开发语言文档(官方文档) -- 2.基本概念
网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2. 基本概念 2.1. 基本类型 从可以在任何变量处理调用成员函数和属性 ...
- .NET面试题系列[5] - 垃圾回收:概念与策略
面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...
- 《徐徐道来话Java》(1):泛型的基本概念
泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的.由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS ...
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
随机推荐
- boost库的安装
1.网上下载boost_1_67_0.zip,解压 2.双击boost_1_67_0/bootstrap.bat文件,生成bjam.exe,b2.exe. 3.打开命令行运行 bjam stage - ...
- 最佳加法表达式(dp)
题目描述: 有一个由1..9组成的数字串.问如果将m个加 号插入到这个数字串中,在各种可能形成的 表达式中,值最小的那个表达式的值是多少 (本题只能用于整数) 解题思路: 假定数字串长度是n,添完加号 ...
- unity3D开发的程序发布到Android平台上进行运行测试的详细步骤
第一步 下载安装JDK 和SDK 1.需要配置java环境.点击链接进入ava的配置的方法:http://www.cnblogs.com/Study088/p/7496158.html 2.下载 ...
- zookeeper:springboot+dubbo配置zk集群并测试
1.springboot配置zk集群 1.1:非主从配置方法 dubbo: registry: protocol: zookeeper address: ,, check: false 1.2:主从配 ...
- 外部点击链接,登陆后,直接跳转到该链接(过滤器 + Cookie实现)
一.web.xml (1)指定过滤的Servlet类 (2)配置过滤规则,过滤以.mail结尾的链接 <?xml version="1.0" encoding="U ...
- TreeMap - 源代码学习笔记
TreeMap 实现了 NavigableMap 接口,而NavigableMap 接口继承于 SortedMap接口. 所有本文还会记录 SortedMap 和 NavigableMap 的阅读笔记 ...
- 7系列FPGA远程更新方案-QuickBoot(转)
reference: http://xilinx.eetrend.com/d6-xilinx/article/2014-04/7009.html reference : quickboot meth ...
- Centos7初始配置
配置 centos7 ip地址: vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static ONBOOT=yes NM_CONTRO ...
- Install SharePoint 2013 with SP1 on Windows Server 2012 R2 error - This Product requires .NF 4.5
博客地址:http://blog.csdn.net/FoxDave 最近因为项目需要要搭建SharePoint 2013的开发环境. 准备了Windows Server 2012 R2系统和Sha ...
- 70 多表查询的分组F 聚合 Q 查询
聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典.键的名称是聚合值的标识符,值是计算出来的聚合值.键的名称是按照字段和聚合函 ...