C++11中对类(class)新增的特性】的更多相关文章

C++11中对类(class)新增的特性 default/delete 控制默认函数 在我们没有显式定义类的复制构造函数和赋值操作符的情况下,编译器会为我们生成默认的这两个函数: 默认的赋值函数以内存复制的形式完成对象的复制. 这种机制可以为我们节省很多编写复制构造函数和赋值操作符的时间,但是在某些情况下,比如我们不希望对象被复制, 在之前我们需要将复制构造函数和赋值操作符声明为private,现在可以使用delete关键字实现: class X { // - X& operator=(cons…
在c++11中,static静态类对象在执行构造函数进行初始化的过程是线程安全的,有了这个特征,我们可以自己动手轻松的实现单例类,关于如何实现线程安全的单例类,请查看c++:自己动手实现线程安全的c++单例类.下面给出一个验证例子: 1.清单1:staticSafe.h #include <iostream> #include <thread> using namespace std; class Cnum { public: Cnum() { std::cout <<…
在c++11中,一个callable object(可调用对象)可以是函数指针.lambda表达式.重载()的某类对象.bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function就是为此而生.function位于functional头文件,可以看做是那几类callable object的抽象表示. #include<iostream> #include<functional> using namespace std; int f_add(int i,int j…
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表.最后编写主类C,在主类的main方法 中测试类A与类B. package jicheng; public class A { public void showA() { System.out.println("asdfsdf"); } } package jic…
c++11新增的容器1:array array最早是在boost中出现:http://www.boost.org/doc/libs/1_61_0/doc/html/array.html 当时的初衷是希望提供一个在栈上分配的,定长数组,而且可以使用stl中的模板算法. array的用法如下: #include <string> #include <iterator> #include <iostream> #include <algorithm> #inclu…
在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数. 构造函数. 调用关系先看一段代码: class Base { public : Base() { cout << "B() " << endl; }~ Base() { cout << "~B() " << endl; } private: int _pri; protected: int _pro; publi…
关于std::function 的用法:  其实就可以理解成函数指针 1. 保存自由函数 void printA(int a) { cout<<a<<endl; } std::function<void(int a)> func; func = printA; func(2); 2.保存lambda表达式 std::function<void()> func_1 = [](){cout<<"hello world"<&l…
随着Vsisual Studio 2013 RC版的放出,之前承诺的对C++ 11语法支持已经全部完成,本文是C++ 11中我喜欢的语法系列的最后一部分(一),(二). 非静态成员直接初始化 在C++ 03的时候,非静态成员变量只能在对象的构造函数里初始化,例如: struct A    {        int m;        A() : m (7) { }    }; 当对象成员比较多的时候,这个对象成员的初始化是非常难看的.尤其是在构造函数较多的情况下,由于C++ 03不支持委托构造函…
本文主要介绍了C++11中的移动语义与右值引用, 并且对其中的一些坑做了深入的讨论. 在正式介绍这部分内容之前, 我们先介绍一下rule of three/five原则, 与copy-and-swap idiom最佳实践. 本文参考了stackoverflow上的一些回答. 不能算是完全原创 rule of three/five rule of three是自从C++98标准问世以来, 大家总结的一条最佳实践. 这个实践其实很简单, 用一句话就能说明白: 析构函数, 拷贝构造函数, =操作符重载…
第11章 使用类 1. 运算符重载是一种形式的C++多态. 2. 不要返回指向局部变量或临时对象的引用.函数执行完毕后,局部变量和临时对象将消失,引用将指向不存在的数据. 3. 运算符重载的格式如下: operatorop(argument-list); 可以使用函数表示法或运算符表示法来使用它. total = coding + fixing; total = coding.operator+(fixing); 4. 运算符重载的限制: 1)  重载后的运算符必须至少有一个操作数是用户定义的类…