第一个简单例子

#include <string>
#include <iostream>
using namespace std;
class Test
{public:private:int a;int b;//非const的static类型只能在类外定义,这里是声明static int c;//非const的static类型只能在类外定义,这里是声明static int ret();//Test类型是不完全类型,只能定义这个类型的引用或者指针,或者声明(不能定义)不完全类型作为参数或者返回类型的函数,顺便提一下,下面t1和t2是定义性声明,又叫定义又叫声明Test &t1;//incomplete type   定义性声明t1Test *t2;//incomplete type   定义性声明t2Test com(Test t1,Test t2)const;
};//非const的static成员在类外,因为static函数没有this指针,所以只能使用static成员,不能使用普通成员
int Test::c = 1234;
//非const的static成员在类外定义,因为static函数没有this指针,所以只能使用static成员,不能使用普通成员
int Test::ret(){return c;}
//成员函数在类外定义
Test Test::com(Test t1,Test t2)const{
if(t1.a > t2.a)return t1;
else return t2;
}int main()
{return 0;
}

第二个稍微长点:

文件a.h

#ifndef A_H
#define A_H#include <string>
#include <iostream>
#include "memory"
#include "b.h"
class Test;
using namespace std;void print(Test *);
#endif

文件b.h

#ifndef INCLUDE_TEST2
#define INCLUDE_TEST2
#include <string>
#include <iostream>
#include "a.h"using namespace std;
class Test;
extern void print(Test *);
class TestMgr{
public:friend void print(Test *);void clear(Test );
private:
};class Test
{public:friend void print(Test *);Test() = default;friend void TestMgr::clear(Test);private:int a;int b;static int c;static int ret();//Test &t1;//incomplete type //Test *t2;//incomplete typeTest com(Test t1,Test t2)const;
};#endif

文件func.cc

#include "a.h"
#include <iostream>
#include <string>
#include "b.h"
using namespace std;
void print(Test *t)
{
cout << t->a << endl;
cout << t->b << endl;
cout << "This is a test" << endl;
}int Test::c = 1234;
int Test::ret(){return c;}
Test Test::com(Test t1,Test t2)const{
if(t1.a > t2.a)return t1;
else return t2;
}void TestMgr::clear(Test t)
{}

文件main.cc

#include <string>
#include <iostream>
#include "a.h"
#include "b.h"
using namespace std;int main()
{
Test t;
Test *t1 = &t;
print(t1);return 0;
}

main.cc和func.cc两个文件一起编译:

g++  main.cc func.cc -o 123

static和不完全类型的一个例子相关推荐

  1. 使用Zabbix的SNMP trap监控类型监控设备的一个例子

    转载来源 :使用Zabbix的SNMP trap监控类型监控设备的一个例子 :https://www.jianshu.com/p/aa795afdf655 介绍 本文以监控绿盟设备为例. 1.登录被监 ...

  2. 【Zabbix-SNMP trap】使用Zabbix的SNMP trap监控类型监控设备的一个例子

    本文以监控绿盟设备为例. 1.登录被监控的设备的管理系统,配置snmptrap地址指向zabbix服务器或代理服务器. snmptrap地址也叫陷阱. 2.配置或关闭防火墙,并验证是否能在zabbix ...

  3. C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介...

    委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见 ...

  4. 框架的特性_Go 语言 Web 框架 Echo 系列:基础篇—通过一个例子串联各特性

    通过前面的介绍,相信对 echo 有了一个初步的认识.本文我们通过一个简单的登录页面来串联 echo 的相关特性.因为该文主要关注各个特性,所以在目录结构和代码组织方面很随意. 本节最终效果 1)登录 ...

  5. CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)...

    Obtaining (and managing) file and folder icons using SHGetFileInfo in C# 作者:Paul Ingles  翻译:小新0574 审 ...

  6. 从一个例子开始分析AIDL原理

    上一个项目(下载中心)使用到了AIDL相关的技术,趁现在项目不是特别繁忙,总结一下.首先第一个问题,AIDL是个啥东西?它的全称叫 Android Interface Definition Langu ...

  7. 【Hadoop】一个例子带你了解MapReduce

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  8. Jena的简单理解和一个例子

    本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...

  9. Java 回调函数(传统方法和lambda方法)-一个例子秒懂

    原文地址为: Java 回调函数(传统方法和lambda方法)-一个例子秒懂 背景: 想写一个工具类 Tool.java ,其中方法 public void readOneLine() 负责一行一行地 ...

最新文章

  1. 这次我让你彻底弄懂 RESTful
  2. 一个线性几何不等式猜想
  3. 鲁东大学计算机王跃,鲁东大学学子在“程序设计天梯赛”中取得优异成绩
  4. Python基础概念_12_编程风格
  5. 荣耀20青春版鸿蒙,荣耀20青春版曝光,浴霸三摄+麒麟810+系统亮点满满
  6. 11岁过python1级_11岁表弟写的Python零基础入门笔记!
  7. Java网络爬虫实操(8)
  8. 使用java自带的日志管理_java日志管理
  9. PAT乙级 1003. 我要通过!
  10. 密码学专题 数据填充的方式|序列加密的方式
  11. eclipse搭建maven开发环境
  12. 【分享】纯js的n级联动列表框 —— 基于jQuery,支持下拉列表框和列表框,最重要的是n级,当然还有更重要的...
  13. mac设置python版本切换,和设置python默认版本
  14. 根据接口文档中的入参,生成自动化测试用例中的异常测试用例,包含用例描述,用例数据
  15. matlab2c使用c++实现matlab函数系列教程-ismember函数
  16. 趣图:程序猿和运维狗的工作日常……
  17. 6.高性能MySQL --- 查询性能优化(2)
  18. 蛙跳算法优化VMD参数,惩罚系数,分解层数,matlab语言 ,最小包络熵为适应度函数。
  19. Attention Points
  20. 使用STM8S003定时器的PWM功能输出PWM波

热门文章

  1. .net门槛是否真的很低?
  2. VS2005 VSTO 项目创建
  3. OXite解读(1)----- 概述
  4. Day11多态部分-4
  5. 用Unity3D实现简单的井字棋小游戏
  6. MFC Edit控件 error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd ”
  7. App设计灵感之十二组精美的房产App设计案例
  8. App设计灵感之十二组精美的手机健康监测App设计案例
  9. iOS之深入解析渲染的底层原理
  10. 463. Island Perimeter 岛屿的周长