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

网店运营流程步骤网站优化排名方法有哪些

网店运营流程步骤,网站优化排名方法有哪些,机票网站建设,福州网站建设方案文章目录 一、类模板的运算符重载 - 函数实现 写在类外部的不同的 .h 头文件和 .cpp 代码中1、分离代码 后的 友元函数报错信息 - 错误示例Student.h 头文件内容Student.cpp 代码文件内容Test.cpp 代码文件内容执行报错信息 2、问题分析 二、代码示例 - 函数实现 写在类外部的不…

文章目录

  • 一、类模板的运算符重载 - 函数实现 写在类外部的不同的 .h 头文件和 .cpp 代码中
    • 1、分离代码 后的 友元函数报错信息 - 错误示例
      • Student.h 头文件内容
      • Student.cpp 代码文件内容
      • Test.cpp 代码文件内容
      • 执行报错信息
    • 2、问题分析
  • 二、代码示例 - 函数实现 写在类外部的不同的 .h 头文件和 .cpp 代码中
    • 1、完整代码示例
      • Student.h 头文件内容
      • Student.cpp 代码文件内容
      • Test.cpp 代码文件内容
    • 2、执行结果


将 类模板 函数声明 与 函数实现 分开进行编码 , 有 三种 方式 :

  • 类模板 的 函数声明 与 函数实现 都写在同一个类中 , 也就是没有分开进行编码 ;
  • 类模板 的 函数实现 在 类外部进行 , 函数声明 和 实现 写在相同的 .cpp 源码文件中 ;
  • 类模板 的 函数实现 在 类外部进行 , 函数声明 和 实现 写在不同的 .h 和 .cpp 源码文件中 ;

在博客 【C++】泛型编程 ⑨ ( 类模板的运算符重载 - 函数声明 和 函数实现 写在同一个类中 | 类模板 的 外部友元函数问题 ) 中实现了第一种情况 , 类模板 的 函数声明 与 函数实现 都写在同一个类中 , 也就是没有分开进行编码 ;

在博客 【C++】泛型编程 ⑩ ( 类模板的运算符重载 - 函数实现 写在类外部的同一个 cpp 代码中 | 类模板 的 外部友元函数二次编译问题 ) 中 , 分析了 第二种情况 , 类模板 的 函数实现 在 类外部进行 , 写在 一个 cpp 源码文件中 ;

在本篇博客中 , 开始分析 第三种 情况 , 函数实现 在 类外部进行 , 函数声明 和 实现 写在不同的 .h 和 .cpp 源码文件中 ;





一、类模板的运算符重载 - 函数实现 写在类外部的不同的 .h 头文件和 .cpp 代码中




1、分离代码 后的 友元函数报错信息 - 错误示例


上一篇博客 【C++】泛型编程 ⑩ ( 类模板的运算符重载 - 函数实现 写在类外部的同一个 cpp 代码中 | 类模板 的 外部友元函数二次编译问题 ) 中 , 分析了 第二种情况 , 类模板 的 函数实现 在 类外部进行 , 写在 一个 cpp 源码文件中 ;

将上述源码 分别写到 .h 头文件 , .cpp 代码文件 中 ;


Student.h 头文件内容


Student.h 头文件内容 :

#include "iostream"
using namespace std;template <typename T>
class Student
{// 左移运算符重载friend ostream& operator<< <T> (ostream& out, Student& s);public:// 构造函数Student(T x, T y);// 重载 + 运算符Student operator+(Student& s);public:T a, b;
};

Student.cpp 代码文件内容


Student.cpp 代码文件内容 :

#include "Student.h"// 类模板构造函数
// 使用  Student<T>:: 域操作符访问函数
template <typename T>
Student<T>::Student(T x, T y)
{this->a = x;this->b = y;
}// 重载 + 运算符
// 使用  Student<T>:: 域操作符访问函数
template <typename T>
Student<T> Student<T>::operator+(Student<T>& s)
{// 函数内部的类的 <T> 模板类型 , 可加 Student<T> 可不加 Student// 不加 <T> 也可以使用 , 加了也不会报错Student student(this->a + s.a, this->b + s.b);return student;
}// Student 类的友元函数
// 左移运算符重载 函数
template <typename T>
ostream& operator<<(ostream& out, Student<T>& s)
{out << "a:" << s.a << " b: " << s.b << endl;return out;
}

Test.cpp 代码文件内容


Test.cpp 代码文件内容 :

#include "iostream"
using namespace std;#include "Student.h"int main() {// 模板类不能直接定义变量// 需要将 模板类 具体化之后才能定义变量Student<int> s(666, 888);cout << s << endl;Student<int> s2(222, 111);cout << s2 << endl;// 验证 加法运算符 + 重载Student<int> s3 = s + s2;// 验证 左移运算符 << 重载cout << s3 << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
}

执行报错信息


执行 Test.cpp 中的 main 函数 , 报如下错误 :

1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>Student.cpp
1>Test.cpp
1>正在生成代码...
1>Test.obj : error LNK2019: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Student<int> &)" (?<<@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@AAV?$Student@H@@@Z),该符号在函数 _main 中被引用
1>Test.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Student<int>::Student<int>(int,int)" (??0?$Student@H@@QAE@HH@Z),该符号在函数 _main 中被引用
1>Test.obj : error LNK2019: 无法解析的外部符号 "public: class Student<int> __thiscall Student<int>::operator+(class Student<int> &)" (??H?$Student@H@@QAE?AV0@AAV0@@Z),该符号在函数 _main 中被引用
1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Debug\HelloWorld.exe : fatal error LNK1120: 3 个无法解析的外部命令
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0==========

在这里插入图片描述


2、问题分析


在上述示例中 , 只需要改一个地方 , 即可成功执行 ,

#include "Student.h"

导入源码时 , 导入 Student.cpp 文件 , 不能导入 Student.h ;

// 此处不能导入 .h 头文件
// 必须导入 .cpp 源码文件
#include "Student.cpp"

这是 类模板 的实现机制 决定的 ;

还是 两次编译 造成的问题 ;

编译代码时 , 编译到 Student.h 时 , 会生成一个 类模板 函数头 ,

编译 Student.cpp 时 , 类模板函数 不会像 普通函数 一样 , 寻找函数头 , 找不到对应的 函数头 ;


#include "Student.cpp" 包含进来 , Student.cpp 中就有 Student.h , 变相的将这两个代码定义在同一个文件中 ;

相当于 将 类模板 的 函数声明 和 函数实现 都定义在了 Student.h 头文件中 ;

这种类型的头文件 可以改成 .hpp 后缀 , 表明该文件中同时包含了 函数声明 和 函数实现 ;





二、代码示例 - 函数实现 写在类外部的不同的 .h 头文件和 .cpp 代码中




1、完整代码示例



Student.h 头文件内容


Student.h 头文件内容 :

#include "iostream"
using namespace std;template <typename T>
class Student
{// 左移运算符重载friend ostream& operator<< <T> (ostream& out, Student& s);public:// 构造函数Student(T x, T y);// 重载 + 运算符Student operator+(Student& s);public:T a, b;
};

Student.cpp 代码文件内容


Student.cpp 代码文件内容 :

#include "Student.h"// 类模板构造函数
// 使用  Student<T>:: 域操作符访问函数
template <typename T>
Student<T>::Student(T x, T y)
{this->a = x;this->b = y;
}// 重载 + 运算符
// 使用  Student<T>:: 域操作符访问函数
template <typename T>
Student<T> Student<T>::operator+(Student<T>& s)
{// 函数内部的类的 <T> 模板类型 , 可加 Student<T> 可不加 Student// 不加 <T> 也可以使用 , 加了也不会报错Student student(this->a + s.a, this->b + s.b);return student;
}// Student 类的友元函数
// 左移运算符重载 函数
template <typename T>
ostream& operator<<(ostream& out, Student<T>& s)
{out << "a:" << s.a << " b: " << s.b << endl;return out;
}

Test.cpp 代码文件内容


Test.cpp 代码文件内容 :

#include "iostream"
using namespace std;// 此处不能导入 .h 头文件
// 必须导入 .cpp 源码文件
#include "Student.cpp"int main() {// 模板类不能直接定义变量// 需要将 模板类 具体化之后才能定义变量Student<int> s(666, 888);cout << s << endl;Student<int> s2(222, 111);cout << s2 << endl;// 验证 加法运算符 + 重载Student<int> s3 = s + s2;// 验证 左移运算符 << 重载cout << s3 << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
}

2、执行结果


执行结果 :

a:666 b: 888a:222 b: 111a:888 b: 999请按任意键继续. . .

在这里插入图片描述

http://www.tj-hxxt.cn/news/75685.html

相关文章:

  • 付费网站怎么做网络推广接单平台
  • 新疆生产建设兵团第七师门户网站抖音搜索排名
  • 网站开发培训学校今日最新国际新闻
  • 爱情动做电影网站推荐天津seo优化公司
  • 效果图设计师主要做什么优化方案电子版
  • 做网站说要自己贴税点是怎么回事呀如何用google搜索产品关键词
  • 佛山营销型网站seo1域名查询
  • 河北农业建设信息网站百度热搜榜排名今日
  • 武汉 外贸网站建设公司互联网营销师有什么用
  • 企业网站建设原则百度精准获客平台
  • 太原建站公司点击查看泰安seo公司
  • 网站如何做等级保护seo优化排名易下拉用法
  • 宝鸡做网站设计个人如何注册网址
  • 帝国cms做的网站新闻类软文营销案例
  • 网站建设方案预算费用预算无锡营销型网站制作
  • 手机网站功能分析网络营销是指什么
  • 公司网站banner怎么做网络推广技术外包
  • 建设银行网站怎么登陆不了成都网络营销搜索推广
  • 网站建设 服务内容 费用太原seo排名优化软件
  • wordpress插件对话seo优化排名服务
  • 沧州哪里做网站如何推广公司网站
  • 沧州企业网站制作的百度sem优化师
  • 如何在电商上购物网站百度认证营销顾问
  • 中国建设银行官网个人登录电脑优化工具
  • 如何查看一个网站是用什么cms做的百度搜索引擎使用技巧
  • 无锡企业网站制作价格论坛推广怎么做
  • 惠州网站建设 鑫品牌营销策略研究
  • 网站开发实用技术 代码北京疫情又严重了
  • 质量好网站建设公司长沙网络营销顾问
  • wordpress取消图片自适应优就业seo怎么样