![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
e5Max
这个作者很懒,什么都没留下…
展开
-
public 与private 之争
这是在“北京设计模式学习小组”里讨论的一个问题,关于是否可以直接公开类的属性字段?问题起源于对单例模式的讨论。由于行文的流畅和理解的必要,这里作了一些整理。【注:因为担心涉及到隐私,这里未公开各位发言者的昵称和QQ号。也未向各位发言者征求是否同意被引用的请求。若您看到帖子后觉得有不妥之处,请在评论处留言,我会及时联系您并作出相应处理 。谢谢!】Y: 如果把一个非单例的概念弄成一个单例设计原创 2013-04-22 17:09:37 · 1420 阅读 · 0 评论 -
C++中类型引导关键字class 和 typename
template 模板定义中类型引导关键字class 和 typename的历史渊源。原创 2015-04-11 08:33:11 · 1054 阅读 · 0 评论 -
值得推荐的C/C++框架和库
【本文系外部转载,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】留做备用下次造轮子前先看看现有的轮子吧值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测转载 2015-10-14 13:26:55 · 798 阅读 · 0 评论 -
C++四种智能指针小结
C++四种智能指针auto_ptr、scope_ptr、shared_ptr和weak_ptr. 其中auto_ptr是C++98标准化引入的;scope_ptr、shared_ptr和weak_ptr是C++11标准化才引入的(当然,早在C++03的TR1中就已经可以使用了)。我们都知道,auto_ptr虽说简单,但使用起来却到处是坑,以至于大家都不提倡使用,因此在C++11中已经明确被废弃了。原创 2016-01-23 12:33:31 · 3767 阅读 · 0 评论 -
C++返回值的“拷贝”问题
这个问题本不是什么新鲜玩意了,但最近在和同事调试程序性能的时候,经常会提起这个问题。看来编译器的RVO和NRVO这个问题还是没有达到普及性。先看一段代码:#include <iostream>using namespace std;class MyClass{public: explicit MyClass() : m_value(0) { cout<<"MyC原创 2015-12-04 23:10:41 · 3566 阅读 · 0 评论 -
《C++编程规范》读书笔记(上)
《C++编程规范——101条规则、准则与最佳实践》(C++ Coding Standards——101 Rules, Guidelines and Best Practices)组织和策略问题 设计风格 编程风格 函数与操作符原创 2013-08-03 18:05:25 · 1385 阅读 · 0 评论 -
OBS编译问题汇
1、fatal error LNK1112: module machine type ‘x64’ conflicts with target machine type ‘X86’ 用QtCreator+cmake打开CMakeLists.txt后,直接编译,会报如上错误。经查,可能是QtCreator+cmake打开CMakeLists.txt默认使用32位(X86)架构解析。编译时,编译器和Ma原创 2017-01-19 13:23:19 · 866 阅读 · 0 评论 -
C++中的宏定义
二、define中的三个特殊符号:#,##,#@ #define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #x(1)x##y表示什么?表示x连接y,举例说:int n = Conn(123,456); /* 结果就是n=123456;*/char* str = Conn("转载 2018-01-08 10:34:52 · 389 阅读 · 0 评论 -
warning:deprecated conversion from string constant to 'char *'解决方案
经常看到这个警告,平常都没重视它。但有警告总是让人不爽,搜了一下,xyy410874116 同学有研究。学习后转载记录,谢谢!原文地址:http://blog.csdn.net/xyy410874116/article/details/6397549Linux 环境下当GCC版本比较高时,编译代码可能出现的问题问题是这样产生的,先看这个函数原型:void转载 2015-03-21 12:27:03 · 942 阅读 · 0 评论 -
编写无警告的代码
今天把项目的Qt版本从Qt4.6.3升级到Qt4.8.4,重新编译项目代码的时候,特别关注了一下编译器的警告。于是找到《C++编程规范——101条规则、准则与最佳实践》翻了翻,重温了一下第1条 在高级别警告干净利落地进行编译。 如果编译器对某个构造发出警告,一般表明代码中存有潜在的问题。警告就好比代码的“肿瘤”,可能是良性的也可能是恶性的——作为代码医生的我们不能对其视而不见。必须“把原创 2013-04-02 22:19:32 · 7401 阅读 · 0 评论 -
《C++编程规范》读书笔记(中)
《C++编程规范——101条规则、准则与最佳实践》(C++ Coding Standards——101 Rules, Guidelines and Best Practices)类的设计与继承 构造、析构与复制原创 2013-08-04 13:09:10 · 1289 阅读 · 0 评论 -
《C++编程规范》读书笔记(下)
《C++编程规范——101条规则、准则与最佳实践》(C++ Coding Standards——101 Rules, Guidelines and Best Practices)名字空间与模块 模板与泛型 错误处理与异常 STL:容器 STL:算法 类型安全原创 2013-08-04 17:59:48 · 1639 阅读 · 0 评论 -
C++中的 namespace
从本质上讲,C++中的名字空间是对全局作用域的细分。1、不要在头文件或者#include之前编写名字空间using 1)在头文件中,应该显示地用名字空间限定所有的名字; 2)在源文件中,也应该尽可能的将using声明在局部作用域中。2、将类型及其非成员函数接口置于同一个名字空间中 公有成员函数和非成员函数都是类的公有接口的组成部分。接口原则是这样描原创 2013-09-07 16:34:37 · 783 阅读 · 0 评论 -
C++之能力查询
在大多数情况下,当一个对象出现时,它就能够执行我们需要它执行的事情,因为它的能力已经在接口中被明确的定义好了。class Shape { public: virtual ~Shape(); virtual void draw() const = 0; // .... };//````Shape* s = getSomeShape();s->原创 2013-09-07 17:21:19 · 849 阅读 · 0 评论 -
《C++必知必会》读书笔记(上)
1、数据抽象1) 首先, 为类型取一个描述性的名字。如果很难为这个类型命名,那就说明我们还不知道要实现什么。因此,我们需要多开动脑筋,结合业务逻辑,给即将产生的类一个好的合适的职责。这就是设计过程。一个抽象数据类型应该表示一个单一的、明确的概念,而且为该概念所取的名字应该是显而易见的。2) 其次,列出类型所能执行的操作。要避免在实现时简单的为数据成员提供一连串的get/set(获取/设置)原创 2013-09-14 16:10:14 · 1221 阅读 · 0 评论 -
C++之类成员指针
一、指向成员变量的指针并非指针 C++中指向成员变量的指针其实是一个相对于类对象的偏移量。《C++必知必会》的条款15讲述了这一说法:“与常规指针不同,一个指向成员变量的指针并不指向一个内存位置。它指向的是一个类的特定成员,而不是指向一个特定对象里的特定成员。通常最清晰的做法是将指向数据成员的指针看作为一个偏移量。......。这个偏移量告诉你,一个特定成员的位置距离对象的起点原创 2013-09-14 14:25:39 · 11166 阅读 · 3 评论 -
c++指针比较的含义
在c++中,一个对象可以有多个有效地地址,因此,指针比较并不是关于地址问题,而是关于类的判别 (object identity)。 class Shape {.......}; class Subject {.........}; class ObservedBlob :public shape , public Subject {.........}; 在这个类的转载 2013-09-14 15:02:00 · 1112 阅读 · 0 评论