C++笔试题经典的两个

原创 2015年07月10日 14:46:59
//实现一个自己版本的string。
#include <iostream>
#include <string.h>
using namespace std;

class String
{
public:
    String(const char *s = "")
    {
        str = new char[strlen(s) + 1];
        copy(str,s);
    }
    ~String()
    {
        if (str != NULL)
        {
            delete[]str;
            str = NULL; 
        }
    }
    String(const String &s)
    {
        str = new char[strlen(s.str) + 1];
        copy(str,s.str);
    }
    String& operator=(const String &s)
    {
        String sp(s.str);
        if (this != &s)
        {
            char *temp = str;
            str = sp.str;
            sp.str = temp;
        }
        return *this;
    }
    void Printf()
    {
        cout << str << endl;
    }
    friend  istream& operator>>(istream &is,String& s)
    {
        char *str = new char[30];
        is >> str;
        String temp(str);
        s = temp;
        return is;
    }
    friend ostream& operator << (ostream &out, String& s)
    {
        out << s.str;
        return out;
    }
private:
    void copy(char *dist,const char *src)
    {
        strcpy(dist,src);
    }
private:
    char *str;
};
int main()
{
    String s;
    cin >> s;
    cout << s<<endl;
    return 0;
}


#include <iostream>
using namespace std;
//实现一个简单的智能指针。
template<typename Type>
class my_auto
{
public:
    my_auto(Type *p) :ptr(p)
    {
        count = new int[1];
        count[0] = 1;
    }
    my_auto(const my_auto<Type>& ma)
    {
        ptr = ma.ptr;
        count = ma.count;
        count[0]++;
    }
    my_auto& operator=(const my_auto &ma)
    {
        if (this != &ma)
        {
            this->~my_auto();
            ptr = ma.ptr;
            count = ma.count;
            count[0]++;
        }
        return *this;
    }
    ~my_auto()
    {
        if (count[0]-- == 1)
        {
            cout << "free" << endl;
            delete ptr;
            ptr = NULL;
            delete[]count;
            count = NULL;
        }
    }
    Type& operator*()
    {
        return *ptr;
    }
    Type* operator->()
    {
        return ptr;
    }
private:
    Type *ptr;
    int *count;
};
int main()
{
    my_auto<int> sp(new int(3));
    my_auto<int> sb(sp);
    my_auto<int> sa(new int(100));
    sa = sb;
    //cout << *sp << endl;
    return 0;
}

c++ 常见笔试题

1.库函数strcpy的工作方式 char * strcpy( char *strDest, const char *strSrc )  { assert((strDest != NULL) && (...
  • GoOnDrift
  • GoOnDrift
  • 2014年02月17日 20:34
  • 1527

C/C++经典笔试题

 1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;...
  • demon_evil
  • demon_evil
  • 2008年02月19日 21:29
  • 13946

100条经典C++语言笔试题目-前50题

链接至100条经典C++语言笔试题目-后50题
  • sinat_20265495
  • sinat_20265495
  • 2016年12月03日 10:04
  • 1346

经典C++笔试题目--100(C++与C差异(1-18))

C++与C差异(1-18) 1、C和C++中struct有什么区别?   Protection行为 能否定义函数 C 无 否,但可以有函数指针 C++ 有 默认是privat...
  • xiangjai
  • xiangjai
  • 2016年08月25日 11:05
  • 1140

C/C++经典面试题(持续更新)

面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但只能在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件...
  • zqixiao_09
  • zqixiao_09
  • 2015年12月06日 18:58
  • 4692

常见软件测试笔试题

1、测试用例的设计方法有哪些?请阐述判定表设计测试用例的步骤。 答:等价类划分,边界值分析,错误推断法,因果图法,正交表分析法,场景分析法。 判定表设计测试用例的步骤:确定规则的个数;列出所有的条件桩...
  • shuiziliu1025
  • shuiziliu1025
  • 2016年09月19日 21:38
  • 3608

详解一道C++笔试题,考察重载、覆盖、多态

C++版看到的,说是面试宝典里的题目,考察重载、覆盖、多态等概念,比较有代表性。今天早上远程辅导 Yan Wang 同学学习 Qt 时还想到了这个题目,如果你能够正确理解这个题目,说明对于 C++ 中...
  • foruok
  • foruok
  • 2014年07月21日 08:28
  • 7484

C++字符串操作笔试题第二波

//1.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。 //例如输入“we are happy.”,则输出“we%20are%20happy.”。 #include #inc...
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015年07月03日 16:27
  • 1444

一道经典的for循环笔试题

code: public class test { static boolean foo(char c) { System.out.print(c);...
  • qianquan3
  • qianquan3
  • 2014年03月13日 17:23
  • 2309

经典C++笔试题目--100(编程练习(比C要难)(91-100))

编程练习(比C要难)(91-100) 91、请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数。  【参考答案】 unsigned int TestAsOne0(char...
  • xiangjai
  • xiangjai
  • 2016年08月25日 16:09
  • 7742
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++笔试题经典的两个
举报原因:
原因补充:

(最多只允许输入30个字)