Lukeaxu

赋值运算符函数

系统:Ubuntu 20.04

1. 安装gtest测试框架

这一部分是整理自
How To Install/Use Google C++ Test Framework

安装指令:

sudo apt-get install libgtest-dev
sudo apt-get install cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib

安装完成后可以在源文件中使用下面语句包含库

#include <gtest/gtest.h>

异常:

错误 解决办法
执行apt-get install时出现:
E: Could not get lock /var/lib/dpkg/lock...
sudo killall apt apt-get

2. 使用vim编辑器

  • set expandtab 使用 space 代替 tab
  • set shiftwidth=2 自动缩进的宽度两个空格
  • set num 显示行号

3. 书写CMyString类

class CMyString {
  public:
    CMyString(const char* pData = nullptr);
    CMyString& operator=(const CMyString& str);
    char* getData();
  private:
    char* m_pData;
};

CMyString::CMyString(const char* pData) {
  m_pData = new char[strlen(pData)+1];
  strcpy(m_pData, pData);
}

CMyString& CMyString::operator=(const CMyString &str) {
  if(this == &str){
    return *this;
  }

  delete []m_pData;
  m_pData = nullptr;
   
  m_pData = new char[strlen(str.m_pData)+1];
  strcpy(m_pData,str.m_pData);
  
  return *this;
}

char* CMyString::getData() {
  return this->m_pData;
}

4. 书写测试用例

#include <gtest/gtest.h>
#include "CMyString.cpp"

TEST(RootTest, CopyTo) {
    const char* rawStr = "raw";
    const char* laterStr = "later";

    CMyString raw(rawStr);
    CMyString later(laterStr);
    later = raw;
    ASSERT_STREQ(raw.getData(),later.getData());
}

int main(int argc, char **argv) {
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

5. 执行测试

make
./runTest
posted @ 2021-03-14 17:13  lukeaxu  阅读(85)  评论(0)    收藏  举报