c++知识复习8.0

8.sizeof和strlen的区别?

  1)sizeof是在‘编译’时就能够计算出大小,而strlen是在‘运行’时才能计算出大小。
  2)sizeof是计算变量在内存中所占的内存大小(字节数),而strlen是计算字符串的长度,遇到'\0'结束。
  3)若是数组,则传给sizeof不会退化,而传给strlen就会退化为指针。
  4)sizeof可以计算类型,或者变量的大小,而strlen的参数必须是一个以'\0'结尾的字符串。
  5)sizeof是关键字,不是一个函数,而strlen是一个函数。

9.设计一个不能被继承的类?

  CParent是一个无法被继承的类。CParent类虚继承CNoHeritance类,并且CParent是CNoHeritance的朋友。同时,还有一个CChild类继承与CParent。

class CNoHeritance
{
private:
CNoHeritance(){}
~CNoHeritance(){}
friend class CParent;
};

class CParent : virtual public CNoHeritance
{
public:
CParent(int v){m_v = v;}
~CParent(){};
private:
int m_v;

public:
void fun(){cout << “The value is: ” << m_v << endl;}
};

class CChild : public CParent
{
public:
CChild():CParent(10){}
~CChild(){}
};

10.简述多态的实现机理?

   多态是一个接口的多种实现,是面向对象的核心。主要是利用虚函数来进行实现的,虚函数是用virtual关键字来进行实现的,每一个存在虚函数的类中都有一个虚函数表,存放每个虚函数的地址,类的对象还有一个能够指向虚表的指针(虚指针),虚函数是运行时确定的。

11.浅谈对面向对象的认识?

  面向对象强调抽象、封装、继承、多态。

  抽象:在定义一个类的时候,实际上就是把一类事物中共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称为抽象。

  封装:就是将类的属性包装起来,不让外界轻易的知道他的内部实现。只提供给你对外的接口让你来调用。好处可以增强模块的独立性。如设置属性或方法的访问权限(private、protected、public、默认)。

  继承:就是子类从父类把它的有用的东西拿过来自己用,不用在自己去实现了。

  多态:一个对象可以指向多种实际类型的现象。一个人,在不同场合下,有不同的身份,不同的状态。比如在家里,你是父母的孩子;在学校,你就是学生;在公司,你就是老板的职员。再比如在接口总定义一个run()方法,是什么在跑,汽车还是马?通过不同类的实现来表示相似的逻辑。

12.static修饰的成员变量和成员函数,const修饰的成员变量和成员函数?

    static修饰的成员变量必须在类内部进行声明,在类外进行定义,而且只能定义一次。
    const成员变量只是在某个对象的生存期内是常量,而对于整个类而言是可变的。一个类可以创建多个对象,每个对象的const成员变量的值是可以不同的。因此不能在类声明中初始化const成员变量(普通的const变量必须在定义的时候初始化)。const成员变量的初始化工作必须在构造函数初始化列表中进行。
    static成员函数只能访问static成员变量,也只能调用其他的static成员函数。
    const成员函数只能被该类的const对象调用。且不能修改成员变量,也不能调用该类中的非const成员函数。

13.malloc、calloc和realloc的区别?

   char* p;

   p = (char*)malloc(20);
   p = (char*)calloc(20,sizeof(char));
   p = (char*)realloc(p, sizeof(char)*20);(realloc是给已经分配好的空间,再次进行分配空间)
      <1>malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间.
      <2>calloc则将初始化这部分的内存,设置为0.
      <3>realloc则对malloc申请的内存进行大小的调整.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值