C++每日选择题—Day1

第一题

以下C++代码会输出什么?

#include <iostream>
using namespace std;
class A 
{
public:A() {}~A() {}
private:static int a;
};
int main() {cout << sizeof(A) << endl;return 0;
}

A:0

B:1

C:4

D:8

答案及解析 B

首先,成员函数不存在于实例化对象 中,其次static定义的静态成员变量不属于任何一个对象,是属于整个类的,也不存在实例化对象中。所以这个类其实啥都没有,记住,什么都没有存的类是默认一个字节的,所以选择B

相关博客:C/C++内存对齐规则(结构体、联合体、类)-CSDN博客

第二题

不考虑任何编译器优化(如:NRVO),下述代码第10行会发生()

#include <stdio.h>
class B
{};
B func(const B& rhs)
{return rhs;
}
int main()
{B b1, b2;b2 = func(b1);  //10
}

A:一次默认构造函数,一次拷贝构造函数,一次析构函数,一次(拷贝赋值运算符)operator=

B:二次拷贝构造函数,一次析构函数

C:一次(拷贝赋值运算符)operator=,一次析构函数

D:一次拷贝构造函数,一次析构函数,一次(拷贝赋值运算符)operator=

答案及解析 D

注意说的是第十行,所以不用考虑B b1,b2;

而第十行,首先是调用函数func,由于是引用传参,不需要拷贝构造,但是在返回值这里需要拷贝一个临时变量tmp,用临时变量tmp来返回,所以b2 = tmp;所以这里就是调用的赋值运算符重载函数,然后tmp调用析构函数,因为这个临时变量他tmp完成它的任务来,就会被销毁;

第三题

3. 在32位系统中,关于下面程序说法正确的是()

class Item 
{
private:char *desc;int storage;
public:Item()
{desc = new char[51];}void setInfo(char *dsrc, int num) 
{strcpy(desc,dsrc);   storage = num;}
};int main() 
{Item stock;   stock.setInfo("pen",20);return 0;
}

A:main函数定义了一个stock对象占8个字节

B:storage和desc成员各占4个字节

C:存在内存泄漏的问题

D:存在编译错误

答案及解析 ABC

A:stock是Item这个类的实例化对象,占了8个字节,指针在32位机器上是4字节,int是4字节,通过内存对齐,为8字节; 不懂的可以看这篇博客: C/C++内存对齐规则(结构体、联合体、类)-CSDN博客B​​​​​​​B
B:正确,int类型4字节,32位的指针类型为4字节
C:存在内存泄漏,因为我们在构造函数这里开辟了空间,没有释放
D:不存在编译错误

第四题

4. 对静态成员的正确描述是()?

A:静态数据成员要在类外定义和初始化

B:非静态成员函数也可以操作静态数据成员

C:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区

D:调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

答案及解析  B C

A:静态成员变量,在类里面声明,在类外面定义;

B:因为静态成员变量,是属于整个类的,所以并不需要this指针,非静态成员函数可以不使用this指针直接用静态成员变量;

C:全局变量,静态变量存在静态区,局部变量存在栈;

D:静态成员函数是没有this指针的,因为也是属于整个类的;

第五题

5. 以下程序打印的两个字符分别是()

#include<stdio.h>
#include<iostream>
using namespace std;
struct object 
{char data[3];
};int main() 
{object obj_array[3] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}, {'g', 'h', 'i'}};object *cur = obj_array;printf("%c %c\n", *(char *)((char *)(cur) + 2), *(char *)(cur + 2));return 0;
}

A:c g

B:b d

C:g g

D:g c

答案及解析 A

本题是考查对指针的加整数的考查;

obj_array[3] 这个是存放的字符串的结构体数组,数组每个元素都是字符串;

我们用cur指针指向这个结构体数组的首元素;

我们(char*)cur 是强制类型转换成char类型,目的就是在+2的时候,移动的是两个字节;

所以移动到c位置,(char*) 再强制类型转换一下,是为了解引用的时候取的也是一个char类型,所以就是c,下一个同理;

用图表示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/211937.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【陈老板赠书活动 - 18期】-如何成为架构师这几本书推荐给你

陈老老老板&#x1f9b8; &#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f468;‍&am…

微信小程序前端环境搭建

搭建微信小程序前端环境 申请小程序测试账号 访问路径 使用微信扫描二维码进行申请&#xff0c;申请成功之后&#xff0c;进入界面&#xff0c;获取小程序ID(AppID)和秘钥(AppSecret) 安装微信web开发者工具 访问路径 选择稳定开发的版本 需要在小程序的设置中将默认关闭…

微软发布最新.NET 8长期支持版本,云计算、AI应用支持再强化

11 月 15 日开始的为期三天的 .NET Conf 在线活动的开幕日上&#xff0c;.NET 8作为微软的开源跨平台开发平台正式发布。.NET 团队着重强调云、性能、全栈 Blazor、AI 和 .NET MAUI 是.NET 8的主要亮点。.NET团队在 .NET Conf 2023 [1]活动开幕式上表示&#xff1a;“通过这个版…

c++版本opencv计算灰度图像的轮廓点

代码 #include<iostream> #include<opencv.hpp>int main() {std::string imgPath("D:\\prostate_run\\result_US_20230804_141531\\mask\\us\\104.bmp");cv::Mat imgGray cv::imread(imgPath, 0);cv::Mat kernel cv::getStructuringElement(cv::MORPH…

6.1.webrc媒体协商

那今天呢&#xff1f;我们来看一下y8 rtc的媒体协商&#xff0c;那实际上在我们之前的课程中呢&#xff1f;我已经向你介绍过y8 rtc的媒体协商了。只不过呢&#xff0c;角度是不一样的&#xff0c;在之前介绍外边tc媒体协商的时候呢&#xff0c;我们是从应用的角度来看。那web …

unity shaderGraph实例-可交互瀑布

不要问我水在哪里&#xff0c;你自己相像这是一个瀑布&#xff0c;瀑布的效果我还不会做 效果展示 整体结构 这里片元着色器最后输出的baseColor应该是黑色&#xff0c;白色为错误。 各区域内容 区域1 计算球到瀑布的距离&#xff0c;然后减去一个值&#xff0c;实现黑色区域…

微服务实战系列之Feign

前言 不知不觉&#xff0c;“微服务实战系列”已完成了六篇&#xff0c;每篇都聚焦一个主题&#xff0c;目的是便于各位盆友能够快速、全面地接收和消化。 博主从服务注册到服务监控&#xff0c;从服务路由到服务安全&#xff0c;从身份认证到加密技术均有涉猎。凡此均有关微服…

思维模型 等待效应

本系列文章 主要是 分享 思维模型 &#xff0c;涉及各个领域&#xff0c;重在提升认知。越是等待&#xff0c;越是焦虑。 1 等待效应的应用 1.1 等待效应在管理中的应用 西南航空公司是一家美国的航空公司&#xff0c;它在管理中运用了等待效应。西南航空公司鼓励员工在工作中…

【iOS】数据持久化(二)之归档和解档(iOS 13以后)

在之前介绍的数据存储方法中&#xff0c;不管是NSUserDefaults还是plist文件都不能对自定义对象进行存储&#xff0c;OC提供的解归档恰好解决了这个问题 本片文章对 iOS13 以后的版本 归档和解档 进行介绍。老版本的解归档见这篇文章&#xff1a;【iOS】文件&#xff08;对象数…

Vue学习笔记-Object.defineproperty函数

文章目录 前文提要Object.defineProperty作用Object.defineProperty参数使用例图getter&#xff0c;也就是get函数setter&#xff0c;也就是set函数 前文提要 本人仅做个人学习记录&#xff0c;如有错误&#xff0c;请多包涵 Object.defineProperty作用 当在js中声明了一个变…

创建maven的web项目

&#xff08;一&#xff09;创建maven的web项目 Step1、创建一个普通的maven项目 &#xff08;1&#xff09;新建一个empty project&#xff0c;命名为SSM2。 点击项目名&#xff0c;右键new&#xff0c;选择Module&#xff0c;左侧选择“Maven archetype”&#xff0c;可以给…