C++试题收集(一)

本文探讨了C++编程中常见的问题,包括代码错误分析、单例模式实现、Unix命令解析及并发概念理解等,并提供了部分解决方案。
  ㈠
#include <stdio.h>
class Base
{
public:
    
~Base(){};
    
void PrintStr(){printf("Base ");}
protected:
    Base()
{};
}
;
class A:public Base
{
public:
    A();


    
~A()
    
{
     
if(m_str!=NULL)
        delete []m_str;
    }
;

    
void TestA(){printf("A str=%s ",m_str);};
public:
    
char *m_str;
}
;
A::A()
{
      m_str
=new char[256];
      m_str[
0]=0;
}



void TestFunc(const Base &obj)
{
    obj.PrintStr();
}

void main()
{
    
//Base *b=new Base();
    Base *a=new A();
    TestFunc(
*a);
    delete a;
}

问题是:

请指出其中的错误?

㈡ 设计一个singleton,不允许使用拷贝构造函数.

㈢Unix环境下,如何把当前目录所有文件的属性改为可读,可写,可执行,写出命令.

㈣Unix环境下,解释下列命令的作用:

    1.PWD  2.TOP  3.WHO   4.DF  5.SU   6.TOUCH  7.FILE

㈤解释以下名词:

    1.条件竞争 2.重入   3.互斥   4.信号量   5.临界区

㈥#dinfine Max 100

   const int Max=100

  以上那种定义常量的方法比较好,为什么?

㈦sizeof(int)=

    sizeof(char*)=

    sizeof(bool)=

   char temp[256];

    sizeof(temp)=

    void func(char temp[256])

{

    sizeof(temp)=

}

㈧不调用任何C库函数,编写StrCat()

    以下是我本人写的一个算法,可能还有多种解法:

 

   Char *StrCat(char *StrDest,const char *StrSrc)

   {

      char *address=StrDest;

      assert((StrDest!=NULL)&&(StrSrc!=NULL));

      while(*StrDest!='/0')

               StrDest++;

     while((*StrDest++=*StrSrc++)!='/0')

               NULL;

    return address;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值