文档章节

C++ 杂项

KuangCaibao
 KuangCaibao
发布于 2015/04/08 19:01
字数 506
阅读 19
收藏 0

1. 操作符重载

定义:
// Time.h
class Time {
  ...
  public:
      ...
      Time operator+ (const Time &t) const;
      ...  
};
实现
// Time.cpp
...
Time Time::operator+ (const Time &t) const
{
   Time sum;
   sum.minutes = minutes + t.minutes;
   sum.hours = hours + t.hours + sum.minutes / 60;
   sum.minutes %= 60;
   return sum; 
}
...

2. <<的重载

问题:

传统的 cout << "";  接受的是字符串,如果我们需要他能够输出一个类。这里需要用到友元和操作符的重载。

如果像上面使用类成员操作符的重载,则类必须放在第一个参数中,最后调用会是这样的

$ Time << cout

这样就有点迷惑性了,为了显示正常的样式,可以使用友元来做。

// Time.h
class Time {
    ...
    friend void operator<< (ostream &os, const Time &t);
};

// Time.cpp
...
void operator<< (ostream &os, const Time &t) {
    os << t.hours << " hours, " << t.minutes << " minutes.";
}

int main() {
    Time t(2, 30);
    cout << t;
}

// 输出
2 hours, 30 minutes.

但是如果<<符使用多个,则上面的代码会报错。修改如下

// Time.h
class Time {
    ...
    friend Time & operator<< (ostream &os, const Time &t);
};

// Time.cpp
...
ostream & operator<< (ostream &os, const Time &t) {
    os << t.hours << " hours, " << t.minutes << " minutes.";
    return os;
}

3. 虚函数

类的构造函数不能是虚函数,因为都要执行。类的析构函数应该是虚函数,why?

4. 工程文件  ProjName.dsp

我们在写工程的时候,需要向工程中添加文件 .cpp, .h,这时如果使用IDE工具如 VC,工具会自动向工程的 dsp 文件中添加我们新加文件的信息。

SOURCE=.\DlgXysxZy.cpp
# End Source File
# Begin Source File

SOURCE=.\DlgXysxZy.h
# End Source File
# Begin Source File

这里可以看到工程中就有这2个文件了,注意后面的 # 内容,这不是注释,感觉像是一种格式。  如果删掉 # 的内容,编译的时候会报错,提示加入的文件没有找到,即文件没有正确的加入到工程中。

5. MFC中的CString和类

class CommParam {
  CString add1;
  CString add2;
};

CommParam commParam;

定义上面的这个类,其内存表现为:

commParam的内存中存放的是add1, add2这2个类的地址,所以大小为8字节。

© 著作权归作者所有

上一篇: C++ 类继承
下一篇: C++ 函数模板
KuangCaibao
粉丝 2
博文 21
码字总数 10699
作品 0
武汉
程序员
私信 提问
[广州]php或c++工作一枚

本人欲求广州php或c++工作一份。 以下是本人的一些信息: 本人信息: 年龄:33。 学历:中专。 居住地:广州。 常用语言:c++(熟悉STL,常用boost)。 能用的语言:java,javascript(jquery),php,sql...

zhouxidev
2013/06/14
379
6
Linux中常用C/C++一些头文件的作用

1、 Linux中一些头文件的作用: <assert.h>:ANSI C。提供断言,assert(表达式) <glib.h>:GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含<glib.h...

SibylY
2013/09/25
228
0
linux下IO口模拟I2C的一些总结

以前一直在用I2C接口,因为总是有线程的例子就一直没有去深入的了解,今天分析了一下在linux下通用GPIO模拟I2C的程序。 I2C的驱动是用杂项设备实现的,这也是一种比较简单的实现方式。通过 ...

luuuk
2013/05/20
2.4K
0
VC 编译参数介绍

VC编译器的编译链接参数非常之多,对程序生成在细节上的控制也是非常强大的。要深入了解编译器参数是比较困难的,但作个初步认识还是不太难。 编译参数可以在Project Setting中查看(Project菜...

长平狐
2012/12/10
58
0
VC 编译参数介绍

VC编译器的编译链接参数非常之多,对程序生成在细节上的控制也是非常强大的。要深入了解编译器参数是比较困难的,但作个初步认识还是不太难。 编译参数可以在Project Setting中查看(Project菜...

彭博
2012/04/12
265
0

没有更多内容

加载失败,请刷新页面

加载更多

如何使用soapUI模拟webservice客户端发送请求

参考资料 https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html 左边是请求参数,可以自己填写!按着那个绿色三角箭头可以模拟发送请求,右边是返回的报文 soapui如何发送xml格...

故久呵呵
24分钟前
3
0
Java Security 介绍

1.介绍 Java平台设计的重点是安全性。在其核心,java语言本身是类型安全的并且提供了垃圾自动回收,这使其增加了应用程序代码的健壮性。安全的类加载以及验证机制确保了只有合法的代码才能够...

lixiaobao
29分钟前
3
0
Niushop开源商城系统-分销商管理

分销商管理 1.分销员的招募与管理 如何申请成为分销员? 在wap端个人中心满足之前设置的升级条件,可以申请分销员 开启分销商审核,需要在后台分销商管理——》待审核处进行审核通过。 通过完...

niushop-芳
30分钟前
2
0
为什么大公司一定要使用 DevOps?

究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠...

cs平台
32分钟前
4
0
高危预警|RDP漏洞或引发大规模蠕虫爆发,用户可用阿里云免费检测服务自检,建议尽快修复

2019年9月6日,阿里云应急响应中心监测到Metasploit-framework官方在GitHub空间公开了针对Windows远程桌面服务远程命令执行漏洞(CVE-2019-0708)的利用代码。利用该代码,无需用户交互操作,即...

Mr_zebra
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部