// 条款01: 视C++为一个语言联邦// C++总共分为四块: C, Obgect-Oriented C++, Template C++, STL。// 这四块每块都有自己的规约,可能一种想法适用于一块但不适用于另一块。// 也就是说C++搞笑编程守则视状况而变化,取决于你使用C++的哪一部分;
毁,而子类的析构函数也未能执行起来。而基类成分通常会被销毁,// 造成了一个诡异的“局部销毁”对象。/
// 条款05: 了解C++默默编写并调用哪些函数// 编译器可以暗自为class创建default构造函数,copy构造函数,copy assignment操作符,以及析构函数// 唯有当这些函数被调用,它们才会被编译器创建出来#include #include using std::cout;using std::endl;using std::string;// 1.编
1.下面的的单例代码在多线程情况下可能产生多个实例。#include #include #include #include #include "windows.h"#include "process.h"using namespace std;// 单例模式的多线程问题。// 懒汉存在线程安全问题,饿汉不存在线程安全问题,但是造成资源浪费。// 懒汉式// 1"
// 条款02: 尽量以const,enum,inline 替换#define// 尽可能的使用编译器而不是预处理器#include // 1. 定义class专属常量(用const代替define)// A. 不能用#define,因为define不重视作用域(scope)// B. 用const,static修饰。用const因为不能被改变,用static因为所有的对象共
Client#define _WINSOCK_DEPRECATED_NO_WARNINGS#include #include #include // 包含网络通信头文件#pragma comment(lib, "ws2_32.lib")#define PORT 8888#define SERVER_IP "127.0.0.1"#define BUFFER_SIZE
// 条款06: 若不想使用编译器自动生成的函数,就该明确拒绝。#include // 防止编译器自动生成copy构造函数和copy assignment操作符的两种方法:// 1.将这两个函数声明为private,并且不实现它们。如果有人调用了它们在链接期会得到一个链接错误。// 2.专门设计一个阻止copying动作的base class,然后继承它。这样在编译期间就能发现错误。
// 条款04: 确定对象被使用前已被初始化#include #include #include using std::string;using std::cout;using std::endl;using std::list;class Point04 {public: int a; int b;};// 1.不要混淆了赋值(assignment)和初始化(
// 条款03: 尽可能使用const#include #include #include // 1.用const 修饰函数的参数// 如果输入参数采用“指针传递”,那么加const修饰可以防止意外地改动该指针,起到保护作用。// 例如void StringCopy(char*strDestination, const char *strSource);// 如果输入参数采
// 条款10: 令operator=返回一个reference to *this。// Have assignment operators return a reference to *this.// 这只是个良好的建议,这个建议被所有的内置类型和标准程序库提供的类型共同遵守。// 这个建议同样适用于+=,-=,*=等等。// 例如:class Widgets {public:
// 条款09: 绝不在构造和析构过程中调用virtual函数。#include #include using namespace std;// 1.例如一个对象在创建和销毁的时候必须要执行另一个行为。// 这样做的目的是base class 中的LogTransaction作为Virtual,子类中只需要重写这个函数,那么就能// 在每个子类创建对象的时候都能调用这个函数,因为
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号