美文网首页
尝鲜c++踩坑合集_0neBean_NOTE

尝鲜c++踩坑合集_0neBean_NOTE

作者: 0neBean | 来源:发表于2020-02-12 16:48 被阅读0次

在家自学了一段时间c++.其中遇到了一些问题,及思考过程,记录下来和大家探讨一下.



  • 1: c++的模板不支持分离文件编译,导致模板类定义了方法的实现写到了cpp文件里不生效,这没人告诉你,估计你也很难猜到吧.

如果你一定需要使用模板进行泛型编程,还要保留.h头文件,可以这么写:
头文件里只引用.cpp文件,包含模板的代码全部写到.cpp文件里.我试过了,不会影响泛型的继承
xxx.h:

//
// Created by 0neBean on 2020/1/11.
//

#ifndef DATA_STRUCTURE_OPERATOR_H
#define DATA_STRUCTURE_OPERATOR_H

#include "xxx.cpp"

#endif //DATA_STRUCTURE_OPERATOR_H

xxx.cpp:

#include <iostream>
#include "../base/Object.h"

using namespace std;

template<typename T, class C>
class Operator : public Object {

public:

    bool operator==(T obj) {
        cout << "== type" << endl;
        return this->value == obj;
    };
......



  • 2: c++ 操作符的重载继承问题,所有可重载的操作符都支持继承,除了赋值运算符,c++有一些特殊的函数是不能被继承的,有一部分编译器会自动生成默认的函数,覆盖继承的函数,这部分特殊的函数包括:构造函数,析构函数 还有c++标准没有提到的,c++编译器会自动生成覆盖继承来的 赋值运算符重载,所以当你想通过面向对象来封装运算符重载时,别忘了在派生类中重新重载赋值运算符.



  • 3 如果你想用自定义数据类型重载赋值运算符,那你得用隐式转换,直接重载赋值操作符,这又是什么骚操作? 看下面代码:

老子明明重载了赋值运算符,可是在赋值时依然报错
Boolean .cpp

#include "../operator/BoolOperator.h"

class Boolean : public BoolOperator<bool, Boolean> {
public:

    Boolean& operator=(bool b) {
        this->value = b;
        return *this;
    };
};

main.cpp

#include "dependency/dependency.h"
using namespace std;

int main() {
    Boolean b = false; //这里运算符报错 
    return 0;
}

Boolean .cpp 必须要这样写,用隐式转换

#include "../operator/BoolOperator.h"

class Boolean : public BoolOperator<bool, Boolean> {
public:
    Boolean(const bool b) {
        this->value = b;
    };
};

相关文章

  • 尝鲜c++踩坑合集_0neBean_NOTE

    在家自学了一段时间c++.其中遇到了一些问题,及思考过程,记录下来和大家探讨一下. 1: c++的模板不支持分离文...

  • 踩坑合集

    1、pagehelper 循环引用问题 解决方法: 方法一 方法二Pagehelper踩坑笔记[https://b...

  • Blog收集

    涵月天-microzz.com 文章 移动端踩坑合集 Nginx 配置简述

  • WindowsTerminal尝鲜踩坑指南

    基本介绍 WindowsTerminal是微软新发布的一款Terminal产品(以下称)WT,对比之前传统的CMD...

  • 小程序框架WePY 从入门到放弃踩坑合集

    小程序框架WePY 从入门到放弃踩坑合集[https://develop.pulsgarney.com/artic...

  • Hive踩坑合集

    转载请在文章起始处注明出处,谢谢。 坑1、split的时候,NULL和''的区别 如果字符串最后的#没拼接数据: ...

  • flutter踩坑合集:

    1. This class (or a class which this class inherits from)...

  • 前端踩坑合集

    1.vue中 proxy 代理太多 5个以上可能导致代理错误 404或者是node 内容泄露 错误 elemen...

  • VUE 3.X 基础组件的自动化全局注册

    Vue 3.0 即将发布正式版啦!准备使用 Vue 3.0 搭建一个个人博客,对 Vue 3.0 进行尝鲜(踩坑 ...

  • pycharm踩坑小合集

    .py文件没有语法高亮,都是一片灰色 [ref]解决:手贱按到把.py文件识别为文本(Text)类型了,只要 Fi...

网友评论

      本文标题:尝鲜c++踩坑合集_0neBean_NOTE

      本文链接:https://www.haomeiwen.com/subject/wabxfhtx.html