1)什么时候使用模板,而不是重载?
解答:模板适用于函数的参数个数相同而类型不同,且函数体相同的情况;不满足这种情况时,就只能使用函数重载。
2)C++不使用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);
}
5)makefile文件的作用是什么?
解答:makefile文件保存了编译器和链接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件、可执行文件要求包含的目标文件模块及库等)。创建程序make首先读取makefile文件,然后激活编译器、链接器、资源编译器和链接器以便产生最后的输出,最后输出并生成的通常是可执行文件。创建程序make利用内置的推理规则来激活编译器,以便通过对特定cpp文件的编译来产生特定的obj文件。
分享到:
相关推荐
### ASCE7-10《建筑物和其他结构最小设计荷载》关键知识点解析 #### 一、规范内容简介 美国土木工程师学会(American Society of Civil Engineers, ASCE)发布的ASCE7-10标准《建筑物和其他结构最小设计荷载》,...
此为ASCE的第三代基准模型代码,可供土木工程领域学者使用。
ASCE-7-2005美国荷载规范中文版知识点总结 ASCE-7-2005美国荷载规范中文版是美国 土木工程师协会(ASCE)发布的一份最小设计荷载规范。该规范涵盖了建筑和其他结构的设计荷载要求,旨在确保建筑和结构的安全和可靠...
asce1885-blogasce1885的博客
** Benchmark 概述** Benchmark,源自英文,中文可译为基准测试或性能测试,是一种评估系统、软件或硬件性能的标准方法。在这个特定的上下文中,我们讨论的是“三代Benchmark”,它指的是一个经过三次迭代和改进的...
ASCE 7-10美国建筑荷载规范(中文版) ASCE 7-10《建筑物和其他结构最小设计荷载》(Minimum Design Loads for Buildings and Other Structures)是由美国土木工程学会(ASCE)发布的一份重要的建筑荷载规范。该...
PHASE II OF THE ASCE BENCHMARK STUDY ON SHM
ANSI ASCE CI 71-21 Identifying, Quantifying, and Proving Loss of Productivity.pdf
ASCE 使用指南 ASCE(American Society of Civil Engineers)是美国土木工程师协会,成立于1852年,拥有150多年丰厚的历史,是全球土木工程领域的领导者。ASCE为全球最大的土木工程信息知识的出版机构,每年出版...
ASCE(美国土木工程师学会)和Science Direct是两个知名的学术出版机构,它们都有自己特定的文献引用和输出格式。EndNote是一款流行的文献管理软件,可以帮助研究人员方便地管理和格式化参考文献。 ASCE(American ...
ASCE LaTeX 指南主要介绍了土木工程学会(American Society of Civil Engineers,简称ASCE)期刊的LaTeX投稿流程和注意事项。由于ASCE期刊接受LaTeX格式的投稿,因此作者需要按照特定的模板和格式要求提交论文。本文...
具体包括梳理美国规范IBC-2021和ASCE7-22中Tilt-up建筑结构的抗震设计方法,设计了一栋单层Tilt-up仓储建筑,采用PERFORM-3D和Sap2000软件对该建筑进行了抗震性能评估与对比分析,基于能力谱法进行抗震性能评价,并...
957/5000 结构安全和结构动力学有许多领域,通常需要计算随机变量函数的前几个统计矩。 通常的近似是泰勒展开法。 这种方法需要计算导数。 为了避免导数的计算,已经提出了概率矩的点估计。 然而,准确度非常低,...
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公司提供的专业资源,主要聚焦于土木工程领域的知识与研究。这个数据库由美国土木工程师协会(American Society of Civil Engineers)出版,该协会成立于1852年,是全球最大的土木工程...
考虑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,分别涵盖了不同的内容。前两个文件可能是对同一部分内容的不同解读或注解,后者可能包含了...
- 推荐用户同时使用SEI/ASCE 7-05和ANSI/AISC 341-05以确保设计的一致性和准确性 #### 四、使用限制与责任声明 - **专业审查必要性**:使用本标准前,需由具备资质的专业工程师、设计师或建筑师进行审查以确保适用...
【asce-common】是一个专为Android开发者设计的开源库,其主要目的是提供一系列可重用且易于集成到任何Android项目的通用代码。这个库基于Java语言编写,因此对熟悉Java的开发者来说,上手使用会非常方便。下面我们...