【Effective C++ 43,44】教程文章相关的互联网学习教程文章

【总结】C++静态成员函数及测试用例【代码】

1.静态成员函数可以用普通函数指针储存,普通成员函数必须用类函数指针储存class A { public:static void fun(){cout << "hello world" << endl;} public:void fun2(){} }; int main() {void(*p)() = &A::fun;//用普通函数指针,正确void (*p1)() = &A::fun2;//用普通函数指针,错误void(A::*p2)() = &A::fun2;//正确,用类的函数指针void(A::*p3)() = &A::fun;//错误,静态成员函数用类函数指针 }2.静态成员函数不可以调用非静态成...

Google C++单元测试框架---Google TestExtending Google Test by Handling Test Events【代码】

Google TestExtending Google Test by Handling Test EventsGoogle测试提供了一个事件侦听器API,让您接收有关测试程序进度和测试失败的通知。 可以监听的事件包括测试程序的开始和结束,测试用例或测试方法等。 您可以使用此API来扩充或替换标准控制台输出,替换XML输出,或提供完全不同的输出形式,例如GUI或数据库。 例如,您还可以使用测试事件作为检查点来实现资源泄漏检查器。一、定义事件侦听器要定义一个事件监听器,你需要...

C++单例模式实现再回顾【代码】

单例模式需要注意的问题:1、static实例保证只有一个实例2、需要C++类外初始化实例、线程锁等3、私化构造函数,关闭赋值运算符=和拷贝构造函数4、应当有Releas函数5、应该考虑线程安全问题下面是懒汉模式的实现:#include <thread> #include <mutex>class singleton { private:singleton() = default;public:static singleton * m_instance;static std::mutex mu;static singleton * GetInstance();void Print();void Release();s...

[c++primer][04]数组和指针【代码】

现代C++程序应尽量使用vector和迭代器类型,而避免使用低级的数组和指针。设计良好的程序只有在强调速度时才在类实现的内部使用数组和指针。4.1 数组数组的维数必须用值大于等于1的常量表达式定义。非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。初始化如果没有显式提供元素初值,数组元素与变量初始化规则一致。字符串字面值包含一个额外额空字符(null)用于结束字符串const char ch[6] = “Danie...

【总结】关于C++虚函数、多态和对象切割【代码】

貌似很少有把这几件事连在一起讲的,在网上查了好久,也翻了半天书才弄明白整个过程是怎么回事。 先说现象再说原理: 1// vtableTest.cpp : Defines the entry point for the console application.2//3 4 #include "stdafx.h" 5 #include "iostream" 6usingnamespace std;7 8class Base9{ 10public: 11virtualvoid function1() {cout << "Base f1" << endl;}; 12virtualvoid function2() {cout << "Base f2" << endl;}; 13}; 1415...

C++高精度加减乘除模板【代码】

其中高精度乘法通过了POJ2389,其他没有测过,不过应该是没有问题的。 其中高精度除法返回一对string,分别表示商和余数。代码:#include <bits/stdc++.h> using namespace std; const int maxn = 100010;int a[maxn], b[maxn], res[maxn];string add(string s1, string s2) { // under condition: s1,s2>=0// 初始化部分int n = s1.length(), m = s2.length();for (int i = 0; i < n; i ++) a[i] = s1[n-1-i] - '0';for (int i =...

著名C/C++编译器GCC的Windows版本

https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download原文:https://www.cnblogs.com/welcome-to-fang-qi-blog/p/12111414.html

Effective C++ 43,44

43.明智地使用多继承。多继承带来了极大的复杂性。最主要的一条就是二义性。当派生类为多继承时,其多个基类有同名的成员时,就会出现二义性。通常要明白其使用哪个成员的。显式地限制修饰成员不仅非常笨拙,并且会带来限制。当显式地用一个类名来修饰一个虚函数时,函数就会被固定,而不再具有虚拟的特性。对于虚函数,若两个基类拥有一个同名同參的虚函数,当派生类没有又一次定义虚函数时(能够仅仅声明),直接调用这个同名函数...

转载的关于c++ static的定义【代码】

static:静态修饰符,被static修饰的变量和方法类似于全局变量和全局方法,可以在不创建对象时调用,当然也可以在创建对象之后调用。常见的可以用于工具类的工具方法中等,譬如:Math类中的绝大多数方法都是静态方法,他们扮演了工具方法的作用。1.第一条也是最重要的一条:隐藏。(static函数,static变量均可)所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。利用这一特性可以在不同的文件中定义同...

Cocos2d-x3.3Final(8)PageView常用成员函数(C++)

PageView * pageView = PageView::create(); //新建pageView->setContentSize(Size(240.0f, 130.0f)); //设置大小pageView->removeAllPages();//清除所有页pageView->insertPage(layout, i);//插入页pageView->scrollToPage(pageCount-2);//滑动到该页面pageView->addEventLIstener(CC_CALLBACK_2(HelloWorld::pageViewEvent, this));void HelloWorld::pageViewEvent(Ref * pSender, PageView::EventType type){switch (type){case...

c++ primer简要笔记

1、对象的动态分配有两种版本:1.1 分配特定类型的单个对象,例:int *pint=new int(1024);1.2 分配特定类型和维数的数组,但没办法给每个元素显示地指定一个初始值,例:int *pia=new int[4];1.3 对应的其删除形式为:delete pint;delete [] pia;2、将一个类设计成基类,要考虑找出类型相关的成员函数,并将这些成员函数记为virtual3、派生类对象的构成:每个基类是一个类的子对象,由基类的构造函数初始化;派生类的构造函数应...

c/c++_Lua交互----关于Lua中table类型的使用实例【图】

lua中的复合类型 只有table 类型,你可以当做任意容器使用 ,比如 数组 PHP中的关联数组 C++中的 std::map 等等 而且提供了很方便的使用下面是lua中 table类型的使用c++加载代码 #include "string.h" extern "C" {#include "lualib.h" //包含lua lib #include "lauxlib.h" //辅助函数 }; #pragma comment(lib,"lua.lib") //Lua和C程序通过一个堆栈交换数据: lua_State ///定义static 只能在源文件内部使用 static lua_Sta...

c++ 如何使用第三方的library【代码】

感谢以下参考资料:  关于如何使用第三方的库: http://stackoverflow.com/questions/21942545/how-to-install-third-party-libraries http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/ http://forums.codeblocks.org/index.php?topic=9366.0  关于编译静态库或者动态库: http://www.cnblogs.com/woainilsr/archive/2013/07/10/3182891.html 正文: IDE:CodeBlocks,编译器:MinGW GNU GCC 步骤如...

xerces-c++修改节点属性值【代码】

#include <syslog.h> #include <xercesc/dom/DOM.hpp> #include <xercesc/parsers/XercesDOMParser.hpp> #include <xercesc/framework/LocalFileFormatTarget.hpp> using namespace xercesc; class XMLReader { public: XMLReader(): m_configFileParser(NULL), m_rootNode(NULL) { }; ~XMLReader(); bool Initialize() { try { XMLPlatformUtils::I...

C++调用Java【代码】

通过JNI获取java虚拟机,再获取当前程序的JNI环境,通过JNI环境获取需要调用的java类信息,再获取需要调用的java类中的函数信息。再通过JNI环境调用,使用类信息、函数信息,调用对应的java函数。 看起来好像有点复杂,but不用担心,cocos2d-x中有一个JniHelper类(头文件的copyright为:cocos2d-x.org,是Google提供的还是cocos2d-x小组自己封装的我就不清楚了),它已经把这些工作封装好了。JniHelper类的使用 加入如下头文件:#in...