`

《ASCE1885的IT笔试面试题》---0000 0005

 
阅读更多

1)什么时候使用模板,而不是重载?

解答:模板适用于函数的参数个数相同而类型不同,且函数体相同的情况;不满足这种情况时,就只能使用函数重载。

2C++不使用sizeof,判断机器是16位还是32位?

解答:如果可以使用sizeof,那是再简单不过了:

#include <iostream>

int main()

{

std::cout<<(sizeof(int*)==4 ? "32位机器" : "16位机器")<<std::endl;

system("pause");

return 0;

}

当然,题目禁止我们使用sizeof,但我们可以通过整数的表示范围来判断,因为16位系统中整数int最大为65535,因此代码如下:

#include <iostream>

int main()

{

unsigned int data = ~0; //取反

if(data > 65536)

{

std::cout<<"32位机器"<<std::endl;

}

else

{

std::cout<<"16位机器"<<std::endl;

}

system("pause");

return 0;

}

3)一般析构函数都要写成虚函数,请问为什么要这样做,编程给出实例说明这样做的作用?

解答:先看实例代码:

#include <iostream>

class ASCEBase

{

public:

ASCEBase(){};

virtual ~ASCEBase(){std::cout<<"ASCEBase destructor!"<<std::endl;};

virtual void Broadcast()

{

std::cout<<"See you in another life ASCEBase!"<<std::endl;

}

};

class ASCEDerive : public ASCEBase

{

public:

ASCEDerive(){};

~ASCEDerive(){std::cout<<"ASCEDerive destructor!"<<std::endl;}

void Broadcast()

{

std::cout<<"See you in another life ASCEDerive!"<<std::endl;

}

};

int main()

{

ASCEBase *pAsce = new ASCEDerive;

pAsce->Broadcast();

delete pAsce;

system("pause");

return 0;

}

程序运行后输出是:

See you in another life ASCEDerive!

ASCEDerive destructor!

ASCEBase destructor!

这样的程序是正确的,但是,如果将基类ASCEBase析构函数前的virtual去掉,则输出结果是:

See you in another life ASCEDerive!

ASCEBase destructor!

即,派生类ASCEDerive的析构函数并没有被调用!一般情况下类的析构函数中是释放内存资源的代码,这样一来,就很可能造成内存泄漏。

因此,一般将析构函数写出虚函数,是为了当这个类用作基类时,用这个基类指针删除它的派生类的对象时,派生类的析构函数能够被调用到。当然,当一个类不打算作为基类使用时,我们一般不将其声明为虚函数,因为当类里面存在虚函数时,编译器会自动给这个类添加一个虚函数表,里面存放指向虚函数的指针,这无疑会增大类的存储空间。

4)编写一个函数,把一个char字符串循环右移n位。例如原来的字符串是”abcdefg”,如果n=2,移位后应该是”fgabcde”,函数头如下:

//pstr是指向以'/0'结尾的字符串的指针

//steps是要求移动的n

void LoopMove(char *pstr, int steps);

解答:

//方法一,使用strcpy

void LoopMove(char *pstr, int steps)

{

int n = strlen(pstr) - steps;

char tmp[MAX_LENGTH];

strcpy(tmp, pstr+n);

strcpy(tmp + steps, pstr);

*(tmp + strlen(pstr)) = '/0'; //截断

strcpy(pstr, tmp);

}

//方法二,使用memcpy

void LoopMove(char *pstr, int steps)

{

int n = strlen(pstr) - steps;

char tmp[MAX_LENGTH];

memcpy(tmp, pstr+n, steps);

memcpy(pstr+steps, pstr, n);

memcpy(pstr, tmp, steps);

}

5makefile文件的作用是什么?

解答:makefile文件保存了编译器和链接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件、可执行文件要求包含的目标文件模块及库等)。创建程序make首先读取makefile文件,然后激活编译器、链接器、资源编译器和链接器以便产生最后的输出,最后输出并生成的通常是可执行文件。创建程序make利用内置的推理规则来激活编译器,以便通过对特定cpp文件的编译来产生特定的obj文件。

分享到:
评论

相关推荐

    ASCE7-10-建筑物和其他结构最小设计荷载-中文版.pdf

    ### ASCE7-10《建筑物和其他结构最小设计荷载》关键知识点解析 #### 一、规范内容简介 美国土木工程师学会(American Society of Civil Engineers, ASCE)发布的ASCE7-10标准《建筑物和其他结构最小设计荷载》,...

    原版第三代benchmark代码.rar_ASCE-Benchmark_BENCHMARK ASCE_benchmark_dri

    此为ASCE的第三代基准模型代码,可供土木工程领域学者使用。

    ASCE-7-2005-美国荷载规范-(中文版)

    ASCE-7-2005美国荷载规范中文版知识点总结 ASCE-7-2005美国荷载规范中文版是美国 土木工程师协会(ASCE)发布的一份最小设计荷载规范。该规范涵盖了建筑和其他结构的设计荷载要求,旨在确保建筑和结构的安全和可靠...

    asce1885-blog:asce1885的博客

    asce1885-blogasce1885的博客

    Benchmark.rar_benchmark_benchmark三代_benchmark模型_三代benchmark_主动控制

    ** Benchmark 概述** Benchmark,源自英文,中文可译为基准测试或性能测试,是一种评估系统、软件或硬件性能的标准方法。在这个特定的上下文中,我们讨论的是“三代Benchmark”,它指的是一个经过三次迭代和改进的...

    ASCE_7-10美国建筑荷载规范(中文版);.pdf

    ASCE 7-10美国建筑荷载规范(中文版) ASCE 7-10《建筑物和其他结构最小设计荷载》(Minimum Design Loads for Buildings and Other Structures)是由美国土木工程学会(ASCE)发布的一份重要的建筑荷载规范。该...

    PHASE II OF THE ASCE BENCHMARK STUDY ON SHM.rar_BENCHMARK ASCE_a

    PHASE II OF THE ASCE BENCHMARK STUDY ON SHM

    ANSI ASCE CI 71-21 Identifying, Quantifying, and Proving Loss of

    ANSI ASCE CI 71-21 Identifying, Quantifying, and Proving Loss of Productivity.pdf

    《ASCE使用指南》

    ASCE 使用指南 ASCE(American Society of Civil Engineers)是美国土木工程师协会,成立于1852年,拥有150多年丰厚的历史,是全球土木工程领域的领导者。ASCE为全球最大的土木工程信息知识的出版机构,每年出版...

    土木工程几个著名期刊ASCE和Science direct中输出格式

    ASCE(美国土木工程师学会)和Science Direct是两个知名的学术出版机构,它们都有自己特定的文献引用和输出格式。EndNote是一款流行的文献管理软件,可以帮助研究人员方便地管理和格式化参考文献。 ASCE(American ...

    ASCE Latex Guide

    ASCE LaTeX 指南主要介绍了土木工程学会(American Society of Civil Engineers,简称ASCE)期刊的LaTeX投稿流程和注意事项。由于ASCE期刊接受LaTeX格式的投稿,因此作者需要按照特定的模板和格式要求提交论文。本文...

    土木工程领域Tilt-up建筑结构抗震性能数值模拟与评估研究

    具体包括梳理美国规范IBC-2021和ASCE7-22中Tilt-up建筑结构的抗震设计方法,设计了一栋单层Tilt-up仓储建筑,采用PERFORM-3D和Sap2000软件对该建筑进行了抗震性能评估与对比分析,基于能力谱法进行抗震性能评价,并...

    03NPE-ASCE00-EM4

    957/5000 结构安全和结构动力学有许多领域,通常需要计算随机变量函数的前几个统计矩。 通常的近似是泰勒展开法。 这种方法需要计算导数。 为了避免导数的计算,已经提出了概率矩的点估计。 然而,准确度非常低,...

    asce.zip_ASCE_list

    ASCE(American Society of Civil Engineers,美国土木工程师学会)是一个知名的国际专业组织,而"asce.zip_ASCE_list"可能是指一个与ASCE相关的软件开发项目,具体来说,它是一个MFC(Microsoft Foundation Classes...

    美国建筑荷载规范

    国ASCE 7-10 《建筑物和其他结构最小设计荷载》 (ASCE 7-10 “Minimum Design Loads for Buildings and Other Structures”)主要内容翻译与介绍 目录 0 规范内容简介1 1 总则7 1.1 适用范围7 1.2 定义和解释7 1.3 ...

    ASCE全文数据库培训iGroup公司.ppt

    ASCE全文数据库是一个由iGroup公司提供的专业资源,主要聚焦于土木工程领域的知识与研究。这个数据库由美国土木工程师协会(American Society of Civil Engineers)出版,该协会成立于1852年,是全球最大的土木工程...

    Benchmark模型结构两阶段损伤诊断 (2005年)

    考虑3种对称损伤模式和1种非对称损伤模式,对由国际结构控制协会与美国土木工程学会(IASC-ASCE)提出的健康监测Benchmark模型结构第二阶段有斜撑的情况进行模拟分析。结果表明:该方法能够有效地识别出结构损伤单元...

    建筑物和其它结构最小设计荷载

    该资料包含的三个部分——(1-4章)ASCE 7-05(6)_CH .pdf、(注释)ASCE 7-05(6)_CH .pdf以及(1-4章)ASCE 7-05(1-4)_CH .pdf,分别涵盖了不同的内容。前两个文件可能是对同一部分内容的不同解读或注解,后者可能包含了...

    钢结构建筑抗震规定(ANSI-AISC-341-05-).doc

    - 推荐用户同时使用SEI/ASCE 7-05和ANSI/AISC 341-05以确保设计的一致性和准确性 #### 四、使用限制与责任声明 - **专业审查必要性**:使用本标准前,需由具备资质的专业工程师、设计师或建筑师进行审查以确保适用...

    asce-common:可以重用并轻松集成到任何项目中的android通用代码

    【asce-common】是一个专为Android开发者设计的开源库,其主要目的是提供一系列可重用且易于集成到任何Android项目的通用代码。这个库基于Java语言编写,因此对熟悉Java的开发者来说,上手使用会非常方便。下面我们...

Global site tag (gtag.js) - Google Analytics