我的电脑Mac,系统MaveRicks。 写一个C代码:#include<stdio.h>void hello(){printf("Hello, this is from C Language ~\n");
} 编译一个库文件:franklinMacmini:~ git$ gcc --shared -o libhello.so hello.c
franklinMacmini:~ git$ ll -tr
drwx------+ 3 git staff 102 Sep 2 01:36 Pictures
drwx------+ 3 git staff 102 Sep 2 01:36 Music
drwx------+ 3 git staff 102 Sep 2 01:36 Movies
drwx------+ 26...
C++提供了four cast operators: static_cast,const_cast,dynamic_cast and reinterpret_cast。1. static_cast 用来进行基本类型数值间的转换,例如:int --- char,安全由程序员进行控制。 不能用于无关类型间指针间的转换,例如:int* --- double* 编译出错。 将null pointers – other pointers。 基类和派生类之间指针或者引用的转换。up-casting (把派生类的指针或引用转换成基类的指针或者引用表示)是安全的;down-casting(把...
转换和继承,虚函数Understanding conversions between base and derived classes is essential to
understanding how object-oriented programming works in C++.
理解基类和派生类之间的转换是必不可少的 理解面向对象编程在。
Like built-in pointers, the smart pointer classes (§12.1, p. 450) support the
derived-to-base conversion—we can store a pointer to a derived object in a
smart pointer to the base type.
像...
json解析后的存储形式:小说明:1.
{
"a":1,
"b":"a‘ g,f‘d[][{{}{}‘f",
"c":["d,ed",2,{"a":1},[1,2],true,null],
"d":{"acc":1}
}
2.
struct TypeValue:public Value
{int type;void *vpoint;///这里的指针会放到其他类中的容器里
class ValueObj:public Value
{
public:std::map<std::string ,TypeValue> mypair;
class ValueArr:public Value
{
public:std::vector<TypeValue> vec;
3.TypeValue,ValueObj,ValueAr...
c/c++ 模板与STL小例子系列<一> 自建Array数组自建的Array数组,提供如下对外接口方法功能描述Array()无参数构造方法,构造元素个数为模板参数个的数组Array(int length)有参数构造方法,构造元素个数为参数length个的数组~Array()析构函数int size()返回数组中元素的个数T& get(int num)返回数组中指定下标的元素的引用void set(T data, int num)设置指定下标元素的值T& operator [] (int num)重载类型T的[]函数下面代码用使用了私...
【转】http://blog.csdn.net/liam1122/article/details/1966617 为了便于说明我们以String类为例: 首先定义String类,而并不实现其成员函数。 1Class String{
2public:
3 String(constchar *ch=NULL);//默认构造函数4 String(const String &str);//拷贝构造函数5 ~String(void);
6 String &operator=(const String &str);//赋值函数7private:
8char *m_data;
9 }; 位拷贝拷贝的是地址,而值拷贝则拷...
#ifndef __MY_SEQLIST_H__
#define __MY_SEQLIST_H__typedef void SeqList;
typedef void SeqListNode;//链表 创建
SeqList* SeqList_Create(int capacity);//链表 销毁void SeqList_Destroy(SeqList* list);////链表 清空void SeqList_Clear(SeqList* list);//链表 长度int SeqList_Length(SeqList* list);//链表 容量 int SeqList_Capacity(SeqList* list);//链表 在某一个位置 插入元素int SeqList_Insert(SeqList* list, Seq...
场景:1.本以为vs设置了源文件的UTF8编码,代码中出现的中文字符串就一定是utf8编码了,可惜不是,如果源码中出现了中文字符串,会在内存中转码为ANSI编码。Unicode(UTF8带签名) 代码页(65001),从菜单->文件->高级保存选项 设置.例子:char path[] = "resources\\中文\\";
for(int i = 0; i < strlen(path); ++i)
{printf("0x%x,",(unsigned char)path[i]);
}查看UTF8文件十六进制
0x72,0x65,0x73,0x6F,0x75,0x72,0x63,0x65,0x73,0x5...
容器主要分为:顺序容器和关联容器顺序容器和关联容器,顺序容器主要有:vector、list、deque等。其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实现。deque双向队列与vector类似,但是对于首元素提供删除和插入的双向支持。关联容器主要有map和set。map是key-value形式的,set是单值。map和set只能存放唯一的key值,multimap和multiset可以存放多个相同的key值, 还有unorder_multimap等。 顺...
今天笔试遇到的一题,当时就写了在函数前声明为C,按C编译。 首先是在C中调用C++函数,包括普通函数,重载函数以及成员函数。对于普通函数,在C++中声明为extern "C",在C中调用。但对于成员函数和重载函数,则需要一个简单的包装。具体可参考:http://www.cppblog.com/franksunny/archive/2007/11/29/37510.html 在C++中调用C函数时,用extern "C"函数名即可。参考:http://blog.csdn.net/imcainiao11/article/details/7369447原文...
unorder_map有3种常见按键查值方法。使用头文件<unordered_map>和<iostream>,以及命名空间std。第一种是按键访问。如果键存在,则返回键对应的值;如果键不存在,则返回0; 1 #include<unordered_map>2 #include<iostream>3 4usingnamespace std;5 6int main() {7 unordered_map<int, int> test_map;8 cout << test_map[0] << endl; // 键0不存在,输出09 test_map[0] = 1; // 加入键0
10 cout << test_map[0] ...
1#ifndef _RBTREE_H_2#define _RBTREE_H_3 4constint nodeSize = 3;5class RBTree6{7private:8 typedef struct Node {9int key;
10int color; //0为红,1为黑11 Node * family[nodeSize]; //family[0]左节点,family[1]右节点,family[2]父节点12 Node(int k, int c);
13 }* Pnode;
14private:
15 Pnode nil;
16 Pnode root;
17private:
18//返回k节点19 Pnode __GetNode(int k);
20//中序...
转载自http://c.biancheng.net/view/1345.html 虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些需要注意的问题。
当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。以下面的语句为例:cin >> namel;可以输入 "Mark" 或 "Twain",但不能输入 "Mark Twain",因为 cin 不能输入包含嵌入空格的字...
在C++中,有三大函数复制控制(复制构造函数,赋值操作符,析构函数),而在C++11中,加入了移动构造函数,移动赋值操作符。我就斗胆将他们命名为六大函数好了。一、构造函数c++primer中说过:构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作就是保证每个对象的数据成员具有合适的初始值。构造函数与其他函数不同:构造函数和类同名,没有返回类型。构造函数与其他函数相同:构造函数也有形参...
to_string()函数返回字符串形式,例如:#include<iostream>
#include<string>
using namespace std;int main()
{int i=123;//aastring s=to_string(134) + "abc";string s=to_string(i) + "abc";cout<<s<<endl;system("pause");return 0;
}运行结果:如何实现to_string()函数的功能?我自己写了一个to_String()://实现to_string函数
#include<iostream>
#include<string>
using namespace std;#define max 100string to_String(in...