首页 > 编程语言 >C++入门

C++入门

时间:2023-05-10 13:12:32浏览次数:33  
标签:入门 派生类 C++ static 基类 全局变量 函数

C++是面向过程也面向对象的语言,具有 预处理器、预处理器指令和宏、模板、对象、封装、继承、多态的特性。

1、C++程序的内存通常如何分配?

解答:

  • 全局数据区:通常存储全局变量、静态数据和常量
  • 代码区:所有类成员函数和非成员函数代码
  • 栈区:执行函数时分配的局部变量、函数参数、返回数据及返回地址等都是在栈区上创建的
  • 堆区:从堆区上分配的内存是在程序运行时由程序员申请的内存,在程序结时由程序员负责释放

2、请谈一下你对C++单元测试框架CppUnit的认识?

解答:CppUnit是C++单元测试框架,是个开源项目,最初版本移植自Junit,其主要功能就是对单元测试进行管理,并可以进行自动化测试。

CppUnit特点就是:

  • XML形式输出结果,可以获取附加数据以便于调试程序;
  • 类似编译器文本输出,并于IDE集成
  • 帮助宏更有利于测试套件的定义,并提供分层测试
  • 测试注册以减少重新编译的需要
  • 测试插件可以更快的编译测试
  • 可以保护封装测试的执行
  • 可支持Mfc和QT测试运行。

3、请分别详细解释C++中成员函数的重载、覆盖和隐藏的区别和联系。

解答:

重载:相同的范围;函数名相同;参数不同;virtual关键字可有可无。

覆盖:不同的范围,函数名相同;参数相同;基类函数必须有virtual关键字。

隐藏:指派生类函数屏蔽了与其同名的基类函数,如果派生类的函数和基类函数同名但参数不同,不论有没有virtual关键字,基类函数被隐藏;

如果派生类的函数和基类函数同名且参数相同,但基类函数没有virtual关键字,基类函数被隐藏。

4、谈谈对C++语言虚函数的认识,并解释纯虚函数的用途。

解答:虚函数首先是一种成员函数,可以被该类的派生类中被重新定义并被赋予另外一种处理功能。虚函数允许派生类取代基类所提供的实现,是动态确定的。

纯虚函数是一个抽象类,是不能被实例化的,用来规范派生类的行为,实际上也就是所谓的“接口”。

5、static全局变量与普通全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

解答:static全局变量是静态存储方式,普通全局变量也是静态存储方式,主要区别就是static全局变量限制了其作用域,只在定义该变量的源文件内有效,在其他源文件不能使用。static全局变量只能初始化一次,以防止在其他文件单元中被引用。将普通局部变量改为static局部变量就是改变了存储方式,即改变了它的生存期,static局部变量只能初始化一次,下一次依据上一次的结果值。?static函数与普通函数作用域不同,?static函数只在当前源文件使用,在当前源文件说明和定义,?static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

标签:入门,派生类,C++,static,基类,全局变量,函数
From: https://www.cnblogs.com/linxiu-0925/p/17387680.html

相关文章

  • Java入门
    Java是面向对象的语言。具有面试对象技术、健壮性、多线程、安全性、分布式计算、跨平台、可移植性、动态性、高性能、解释执行、applet等一系列特点。Java实现机制:Java虚拟机垃圾回收代码安全检测Java的体系结构:最下层是移植接口,由配置器和JavaOS组成,然后是虚拟机,其中上......
  • C++求平均值
    #include<iostream>#include<iomanip>usingnamespacestd;intmain(){  doublea[100];doublen=0,m=0;inti=0;  doublec;  for(inti=0;i<100;i++)  {cin>>a[i];  if(a[i]==-1)break; }if(a[0]==18&&a[1]==2){cout<<&quo......
  • 分布式搜索引擎Elasticsearch基础入门学习
    一、Elasticsearch介绍Elasticsearch介绍Elasticsearh是elastic.co公司开发的分布式搜索引擎。Elasticsearch(简称ES)是一个开源的分布式、高度可扩展的全文搜索和分析引擎。它能够快速、近乎实时的存储、搜索和分析大量数据。适用于包括文本、数字、地理空间、结构化和非结......
  • C++如何获取网卡地址(跨平台)
    需求:获取电脑网卡的硬件地址。就是Linux下运行ifconfig出来的硬件地址。直接上代码:windows下运行ipconfig/all 显示的物理地址。  头文件:GetMacAddrFunc.h#ifndef__DDR_GET_MAC_ADDR_FUNC_H_INCLUDED__#define__DDR_GET_MAC_ADDR_FUNC_H_INCLUDED__#......
  • 课本_第二章、arcpy开发入门
     八股文--判断文件是否存在1result=ap.Exists(文件路径)#返回布尔值2printresult八股文--获取.shp文件中矢量要素数量(属性表的行数)参考连接:Result—ArcMap|文档(arcgis.com)1count=ap.GetCount_management(图层名称)2#此处的count是使用地理处理工具......
  • C#调用C++
    一直是在写C#,最近接触到的项目中有C#调用C++接口的逻辑,自己学习了下,写个步骤日志,C#掉用C++的托管代码项目分三个项目:1、底层C++动态库项目,2、中间层的CLR项目,3、上层的C#项目1.底层C++动态库项目,1、新建一个C++动态链接库(Dll)项目,获取新建了其他的项目后在项目属性中将配置类型......
  • C++标准库和模板库的区别和联系?
    C++标准库包含模板库。C++标准库由三组库构成(std::是个名称空间标识符,C++标准库中的函数或者对象都是在命名空间std中定义的):(1)C库:由C标准库扩展而来,强调结构、函数和过程,不支持面向对象技术。(2)C++库:增加了面向对象的库,包含了既有关键功能的类(3)标准模板库(STL):高效的C++程序库。该......
  • 高效c语言1快速入门
    本章将开发你的第一个C语言程序:传统的"Hello,world!"程序。然后讨论一些编辑器和编译器的选项,并阐述移植性问题。Hello,world!#include<stdio.h>#include<stdlib.h>intmain(void){puts("Hello,world!");returnEXIT_SUCCESS;}在Linux和其他类似Unix的操作系统......
  • Effective Modern C++ 学习笔记
    前言记录下阅读此书的感想与总结,一方面能巩固复习,另一方面也能更好地浓缩本书的精华,方便日后的回看。第五章右值引用、移动语义和完美转发它们带来的好处移动语义使得编译器能使用效率更高的移动操作来替换昂贵的复制操作移动语义使得创建只移对象成为可能,如:std::unique_ptr,t......
  • [C++特性]对std::move和std::forward的理解
    左值、右值、左值引用以及右值引用std::move和std::forward这两个API主要服务于左值引用和右值引用的转化和转发,因此再了解这两个API之前,需要先弄清楚这几个概念。左值:一般指的是在内存中有对应的存储单元的值,最常见的就是程序中创建的变量右值:和左值相反,一般指的是没有对应存......