当前位置: 首页 > news >正文

在声明和定义的一些小坑

 1、静态成员变量的初始化

静态成员变量声明在 .h 头文件文件中,初始化应该在 .cpp 源文件中

就会出现"找到一个或多个多重定义的符号",下面的错误

class MyString{public:typedef char* iterator;typedef const char* const_iterator;iterator begin();iterator end();const_iterator begin() const;const_iterator end() const;//MyString();MyString(const char* str = "");MyString(const MyString& s);~MyString();void swap(MyString& s);MyString& operator=(MyString tmp);char& operator[](size_t pos);const char& operator[](size_t pos) const;size_t capacity() const;size_t size() const;void reserve(size_t n);void resize(size_t n, char ch = '\0');void clear();size_t find(char ch, size_t pos = 0);size_t find(const char* sub, size_t pos = 0);void push_back(char ch);void append(const char* str);void insert(size_t pos, char ch);void insert(size_t pos, const char* str);void erase(size_t pos, size_t len = npos);MyString& operator+=(char ch);MyString& operator+=(const char* str);bool operator<(const MyString& s) const;bool operator==(const MyString& s) const;bool operator<=(const MyString& s) const;bool operator>(const MyString& s) const;bool operator>=(const MyString& s) const;bool operator!=(const MyString& s) const;MyString substr(size_t pos, size_t len = npos);const char* c_str() const;private:char* _str;size_t _size;size_t _capacity;public:const static size_t npos;    //初始化必须在源文件内};std::ostream& operator<<(std::ostream& out, const MyString& s);std::istream& operator>>(std::istream& in, MyString& s);

 

 2、缺省值

缺省值应该在 .h 头文件中,不应该在 .cpp 源文件中

如果出现,就会出现如下错误:“MyString::resize”: 重定义默认参数 : 参数 1

 

void MyString::resize(size_t n, char ch = '\0') //缺省值在头文件的声明中
{if (n <= _size){_str[n] = '\0';_size = n;}else{reserve(n);while (_size < n){_str[_size] = ch;++_size;}_str[_size] = '\0';}
}

 

http://www.lryc.cn/news/208867.html

相关文章:

  • 浏览器事件循环 (event loop)
  • P1868 饥饿的奶牛
  • 【软考系统架构设计师】2021年系统架构师综合知识真题及解析
  • 如何在忘记手机密码或图案时重置 Android 手机?
  • LeetCode每日一题——2520. Count the Digits That Divide a Number
  • 论文阅读——DistilBERT
  • 202212 青少年等级考试机器人实操真题三级
  • token正确不报错,token失效后却出现报跨域错误
  • STM32中除零运算,为何程序不崩溃?
  • sprinbboot 2.7启动不生成日志文件
  • Kafka - 3.x 图解Broker总体工作流程
  • APP自动化测试 ---- Appium介绍及运行原理
  • 学习模板发布
  • Hive 视图和索引
  • EtherCAT主站SOEM-- 0 SOEM下载编译及文件功能介绍
  • 【Python机器学习】零基础掌握RFE特征选择
  • R语言的极值统计学、分位数回归、机器学习方法
  • 【SpringCloudNetflix】一图理解Spring Cloud Netflix解决了那些微服务问题?
  • C++环境配置【学习笔记(一)】
  • Python数据结构——树
  • Simulink和GUI联合使用
  • 【0基础学Java第一课】-- 初始Java
  • osg3.4的插件及功能
  • 『力扣刷题本』:轮转数组
  • Java关于实例对象调用静态变量和静态方法问题
  • 【开源】基于SpringBoot的海南旅游景点推荐系统的设计和实现
  • 字符串中的assert和strcat
  • 方舟生存进化ARK个人服务器搭建教程保姆级
  • SpringBoot可以连接RabbitMQ集群吗 ?
  • 【机器学习】KNN算法-模型选择与调优