首页 > 编程语言 >C++学习(65)

C++学习(65)

时间:2023-06-13 10:31:39浏览次数:43  
标签:prim 函数 派生类 C++ 学习 65 基类 质因数 指针


1关于new运算符,错误的是D

A可以用来动态创建对象和对象数组

B使用它创建的对象和对象数组可以使用运算符delete删除

C使用它创建对象时要调用构造函数

D使用它创建对象数组时必须指定初始值

分析:D 可以不指定初始值,调用默认构造函数进行默认初始化。

int*x=new int();//不传值,默认初始化为0

 

2free释放内存之后,指针还指向原来的那块地址,需要我们设置p=NULL;如果我们不手动设置p=NULL;此时p就变成了野指针。

 

free掉一个指针后,指针仍然指向原来的地址。free的意义在于告诉系统目标地址可以被回收。

 

32 位系统中MAR(内存地址寄存器)为32位,可寻址范围为2的32次方Byte,共大约不足4G的内存空间。指针中保存内存地址,所以大小和MAR大小相同。

 

指针的类型用于确定指针所指的对象的类型,因此初始化或赋值时必须保证类型匹配。指针用于间接访问对象,并给予指针的类型提供可执行的操作,例如,int型指针只能把其指向的对象当作int型数据来处理,如果该指针指向了其他类型(如double类型)的对象,则在指针上执行的任何操作都有可能出错。

 

一个有效的指针必然是以下三种状态之一:

保存一个特定的对象的地址;

指向某个对象后面的另一对象;

或者是0值

 

3分解质因数

#include<iostream>  
using namespace std;  
void prim(int m,int n) {  
   if(m>=n) {  
      while(m%n)  
        n++;  
        m/=n;  
        prim(m,n);  
        cout<<n<<endl;  
   }  
	}  
	int main() {  
	   prim(6,2);  
	}





分析:n从2开始。第一处为m%n,代表取余。当余数是0的时候表示除尽,跳出while循环,即找出一个质因数。此时一个质因数即为n。

然后 m/=n 即让m除去这个质因数,然后再进入求新m质因数的递归。

举例:m=6,n=2

m>n;

m%n=0,跳出while,n没有加1。此时m=6,n=2

m/=n,此时m=3,n=2  (2为一个质因数)

递归prim(m, n),即prim(3,2);

m>n;

m%n=1,n++,此时m=3,n=3,继续while循环

m%n=0,跳出while循环,此时 m=3,n=3 (3为另一个质因数)

m/=n,此时m=1,n=3

递归 prim(m,n),即 prim(1,3);

不满足条件(m > n),返回上层

输出质因数 n=3

输出质因数 n = 2

 

4程序最小单位是函数,程序是由若干个函数组成。

 

当一个类的某个函数被声明为virtual,则在该类的所有派生类中的同原型函数都是虚函数


分析:《C++ Primer》第五版,P537 页:“当在派生类中覆盖某个虚函数时,可以再一次使用virtual关键字指出该函数的性质。然而这么做并非必须,因为一旦某个函

数被声明为虚函数,则在所有派生类中它都是虚函数”

 

a.成员函数被重载的特征:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数不同;

(4)virtual 关键字可有可无。

 

b.覆盖是指派生类函数覆盖基类函数,特征是:

(1)不同的范围(分别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual 关键字。

 

c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。


(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)


6关于C/C++的宏定义,不正确的B

A宏定义不检查参数正确性,会有安全隐患

B宏定义的常量更容易理解,如果可以使用宏定义常量的话,要避免使用const常量

C宏的嵌套定义过多会影响程序的可读性,而且容易出错

D相对于函数调用,宏定义可以提高程序的运行效率

分析:const关键字定义常量比宏安全。尽量以const替换define。尽可能使用const,enum,inline.

 

7下面模板声明中,哪些是非法的(BD)

Atemplate<classType>class C1{};

Btemplate<class T,U,classV>class C2{};

Ctemplate<classC1,typename C2>class C3{};

Dtemplate<typename myT,class myT>class C4{};

分析:B选项的U参数没有指定类型, D选项的 2个形参名同名。

函数模板的格式:

template<class形参名,class形参名,......>返回类型函数名(参数列表)

{

函数体

}

 

类模板的格式为:

template<class形参名 ,class形参名,…>class类名

{... };

 

 D选项的myT在这里是重定义。;typename 和 class 混用没有关系。















标签:prim,函数,派生类,C++,学习,65,基类,质因数,指针
From: https://blog.51cto.com/u_14939782/6467642

相关文章

  • 01 卢京潮《自动控制原理》学习笔记转
    原文:https://zhuanlan.zhihu.com/p/262021993先上一份821的考试大纲,四年大学出来的应该都知道课本会将知识点分为重点、一般、掌握、熟练、理解、熟悉、了解等几个等级:正确理解自动控制原理课程中的有关概念。掌握结构图等效变换方法和梅森公式。能根据结构图熟练求取系统的传......
  • 机器学习之——机器学习中的数学(2)-线性回归,偏差、方差权衡
    前言:   距离上次发文章,也快有半个月的时间了,这半个月的时间里又在学习机器学习的道路上摸索着前进,积累了一点心得,以后会慢慢的写写这些心得。写文章是促进自己对知识认识的一个好方法,看书的时候往往不是非常细,所以有些公式、知识点什么的就一带而过,里面的一些具体意义就不容易......
  • 机器学习之——线性判别分析(LDA), 主成分分析(PCA)
    前言:    第二篇的文章中谈到,和部门老大一宁出去outing的时候,他给了我相当多的机器学习的建议,里面涉及到很多的算法的意义、学习方法等等。一宁上次给我提到,如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA......
  • C++地址值为1(情况说明)
    关于C++中地址值打印出来为1的情况;以下是测试代码:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){constvolatileinta=10;cout<<&a<<endl;int*p=(int*)&a;*p=12;cout<......
  • 量子机器学习Variational Quantum Classifier (VQC)简介
    变分量子分类器(VariationalQuantumClassifier,简称VQC)是一种利用量子计算技术进行分类任务的机器学习算法。它属于量子机器学习算法家族,旨在利用量子计算机的计算能力,潜在地提升经典机器学习方法的性能。VQC的基本思想是使用一个量子电路,也称为变分量子电路,将输入数据编码并映射......
  • 主席树学习笔记
    什么是主席树主席树这个名字看上去很高级,其实不然,它还有另一个名字——可持久化线段树。什么是可持久化可持久化顾名思义就是它可以变得持久,就是我们对他不断进行单点修改后,突然查询它的某一个历史版本,这就叫可持久化。引入例题洛谷3919:可持久化数组题目大意如题,你需要维......
  • 从今天起,换一种轻松有趣的方式学习计算机底层技术!
    大家好,我是轩辕之风。告诉大家一个好消息,我的 《趣话计算机底层技术》 系列技术故事图书终于出版了! 印刷厂新鲜出炉的第一批图书,已经上线京东、当当啦! 你还记得那个CPU一号车间的阿Q吗?这一次它要继续讲故事给你听啦!创作起源我为什么要写这本书呢?在很多年前,我就发现......
  • html第一天学习
    html标签标题标签:<h1>.....<h6>,特点:文字加粗,独占一行,字号逐渐减小<h1>一般用一次段落标签:<p>换行标签:<br>水平标签:<hr>格式化标签</b>加粗:<strong>倾斜:<em>下划线:<ins>删除线:<del>图片:<imgsrc=""alt=""t......
  • 小灰灰深度学习day9——多线程读取小批量数据(这里运行的时候报错了,目前还不会解决,
    在这里先把代码放上来importtorchimporttimeimportnumpyasnpimporttorchvisionfromtorch.utilsimportdatafromtorchvisionimporttransformsfromd2limporttorchasd2ld2l.use_svg_display()#利用svg显示图片importosos.environ["KMP_DUPLICATE_LIB_OK......
  • 6.12 vue3的学习
    1.创建vue3项目:在cmd中首先找到需要保存的路径,输入vuecreate+vue项目的取名,和之前创建vue2是一样的进行如下选择 2.vite创建vue3的方式在cmd中首先输入npminitvue@latest 3.安装依赖和运行依赖#安装依赖npminstall##运行依赖npmrundev#4.vue2创建app实......