C++笔试题详解+扩展
- C++笔试题详解+扩展 推荐度:
- 相关推荐
C++笔试题详解+扩展
目录
1.请设计一个类,不能在类外创建该类的对象。
分析:
2.请设计一个不能被继承的类。
分析:
3.请设计一个能被继承的类,但不能在类外创建该类的对象。
分析:
4.请设计一个类,只能生成该类的一个实例。
分析:
答案如下:
5.能否在主函数前执行一段代码? 可以!
方法:类+构造函数(输出,证明先执行)+静态全局对象!
6.C++中struct和C语言中struct的区别:
(1)若struct A{}为空结构:
(2)功能差异
7.基类A与子类B有同名静态变量(可以出现,不共享)
举例:
在子类中修改基类同名静态成员:
1.请设计一个类,不能在类外创建该类的对象。
分析:
只需要将该类的构造函数定义为私有private即可。(如图)
2.请设计一个不能被继承的类。
分析:
使用final关键字,使类被终结(无法被继承),但仍可创建该类的对象。(如图)
3.请设计一个能被继承的类,但不能在类外创建该类的对象。
分析:
只需将该类的构造函数定义为保护protected的即可。(如图)
4.请设计一个类,只能生成该类的一个实例。
分析:
若将构造函数设置为private私有 => 则一个对象都定义不了。
对象可以调用拷贝构造函数给对象赋值 => 删除系统的拷贝构造函数。
A::GetA()就是创建对象,无需再赋值!!
类中的方法被调用:(1)用对象调用;(2)静态方法可以使用方法名+作用域解析符调用。
非常量引用&只能绑定左值!!返回创建好的对象:改为右值引用:&&
答案如下:
5.能否在主函数前执行一段代码? 可以!
方法:类+构造函数(输出,证明先执行)+静态全局对象!
class A
{
protected:static int m_num;
public:A() { cout << "A:num=" << ++m_num << endl; }
};
int A::m_num = 0;
static A a; //静态全局对象
void main()
{cout << "main begin!" << endl;
}
6.C++中struct和C语言中struct的区别:
(1)若struct A{}为空结构:
对于C++:sizeof(A)=1!(等同于C++定义的类class中什么都没有:sizeof=1,占位符)。
对于C语言:sizeof(A)=0!
(2)功能差异
C++中的struct和类class所具有的功能相同,可以封装函数。
C语言只能在其中定义属性!
7.基类A与子类B有同名静态变量(可以出现,不共享)
子类B本身不与基类A共享A的静态成员(各是各的)!若要在B中使用A的静态成员:使用作用域解析符即A::m_num。
举例:
class A
{
public:A() { cout << "m_num=" << ++m_num << endl; }void Print() { cout << "A:num=" << m_num << endl; }
protected:static int m_num;
};
int A::m_num = 10;class B :public A
{
public:B() { m_num++; }void print() { cout << "B:num=" << m_num << endl; }
protected:static int m_num;//A,B中均有同名的静态成员
};
int B::m_num = 20;void main()
{A a;B b;a.Print();b.print();
}
在子类中修改基类同名静态成员:
- 性能测试(一)
- Component Object Model (COM)
- 我也来说非诚勿扰
- php json数据值,php操作JSON格式数据
- #includelt;和#include
- Lion蠕虫
- spring boot checktoken Principal 如何注入
- css中text文字超出宽度省略号显示并鼠标悬停显示剩余全部:
- 数字芯片设计流程
- VSS 2005 使用详解
- Linux中EXT3与EXT4的区别!
- 【网络流量监控工具之Nethogs】
- 怎么把电脑上的准考证发送到手机上呢
- simpledateformat怎么改变格式 SimpleDateFormat 的使用及其 注意事项
- SimpleDateFormat的概述
- R语言的三种聚类方法
- shiro漏洞原理以及检测key值原理