c++编程语言
沈纵情
有理想的小孩
展开
-
C++ reinterpret_cast,const_cast等 显式类型转换总结
reinterpret_cast,const_cast,static_cast,dynamic_cast 显式类型转换 Cpp代码 #include int main(void) { //reinterpret_cast //将一个类型指针转换为另一个类型指针,这种在转换不修改指针变量值数据存放格式 //只需在编译时重新解释指针的类型,他可以将指针转化为一个整型转载 2013-11-25 09:47:45 · 5024 阅读 · 0 评论 -
c++ 快速入门
#include #include int main() { double price = 109.99 , discount = 0.16; std::cout << price << " " << discount << std::endl; int ival1(1024); int ival2 = 1024;原创 2012-11-27 11:03:35 · 1658 阅读 · 0 评论 -
c++ string
#include int main() { std::cout << " liaojianguo " << " is 笨蛋 " << std::endl;}输出:pateo@pateo-B86N53X:~/work/study$ g++ -o main main原创 2012-11-27 16:10:52 · 518 阅读 · 0 评论 -
c++ static
c++和c的static的用法基本一致定义静态函数的好处:静态函数不能被其它文件所用; 其它文件中可以定义相同名字的函数,不会发生冲突; #include using namespace std; static void fn();//声明静态函数int main(){fn();return 0;}void fn()//定义静态函数{int原创 2013-01-16 16:32:21 · 408 阅读 · 0 评论 -
c++ 作用域
在定义于类外部的成员函数中,形参表和成员函数体都出现在成员名之后。这些都是在类作用域中定义,所以可以不用限定而引用其他成员。例如类Screen中的get的二形参版本的定义,该函数用Screen内定义的index类型来指定其参数类型。因为形参表在Screen类的作用域内,所以不必要指明我们想要的Screen::index。我们想要的是定义在当前类作用域中的,这是隐含的。同样,使用index、widt原创 2013-01-16 10:21:49 · 440 阅读 · 0 评论 -
c++ 类 构造函数
#include using namespace std;class Complex { public: Complex() : m_real(1.0),m_imag(2.5){};//这里的m_real和m_imag在后面才被定义 double getValue(); Complex(double real, double imag)原创 2013-01-15 13:52:10 · 526 阅读 · 0 评论 -
c++ 友元
友元机制允许一个类将对其非共有成员的访问权授予指定的函数或类#include #include using namespace std; class B; class A{ private: int x; public: A(); void display(B &); };原创 2013-01-16 15:03:19 · 434 阅读 · 0 评论 -
c++ this 指针
有关this的说明具体见《c++ Primer》1、说明:类的成员函数具有一个附加的隐含形参,即指向该类对象的一个指针。隐含形参命名为this,与调用成员函数的对象绑定在一起。成员函数不能定义this形参,而是由编译器隐含定义的。成员函数的函数体可以显示的使用this指针(访问数据成员),但是一般不必这么做。编译器在编译的时候会自动加上this指针,比如:object.printfInfo(i原创 2013-01-15 17:31:09 · 589 阅读 · 0 评论 -
c++ mutable
#include using std::cout;using std::endl;class Complex { public : Complex() ; void Output() const; int GetOutputTimes() const;private : int m_iTimes;原创 2013-01-15 16:23:11 · 512 阅读 · 0 评论 -
c++ 函数重载
#include using namespace std;class Complex { public: Complex() : m_real(1.0),m_imag(2.5){};//这里的m_real和m_imag在后面才被定义 double getValue(); double getValue(double xy)原创 2013-01-15 15:14:22 · 469 阅读 · 0 评论 -
c++ explicit
C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?#include using namespace std; class Sales_item{ public: Sales_item(const string&);};int main(){原创 2013-01-17 11:10:31 · 569 阅读 · 0 评论 -
c strtok函数用法
原型 char *strtok(char *s, char *delim); 功能 分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 说明 首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('')来替换,直到找遍整个字符串。 char * p =原创 2013-02-04 10:02:05 · 557 阅读 · 0 评论 -
c++ namespace 命名空间
// name.h namespace A { int fun(); } namespace B { int fun(); } // name.cpp转载 2013-02-26 14:53:40 · 480 阅读 · 0 评论 -
C++ auto_ptr智能指针的用法
C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。[cpp] view plaincopy用法一: std::auto_ptrm_example(new MyClass()); 用法二: std::auto_ptrm_exa转载 2013-02-26 16:16:19 · 475 阅读 · 0 评论 -
C++ auto_ptr
/* FileName: main.cpp Author: ACb0y Create Time: 2011年2月4日 23:12:47 Last Modify Time: 2011年2月5日 00:45:58 */#include using namespace std;/* 智能指针类 */templateclass SmartPtr{//构造函数,析构函数priv转载 2013-02-26 16:14:57 · 456 阅读 · 0 评论 -
c++ try catch exception
#include #include using namespace std;class myexception: public exception{ virtual const char* what() const throw() { return "My exception happened"; }}myex;int main () { try { if(tr原创 2013-02-26 13:40:58 · 863 阅读 · 0 评论 -
C++命名空间 详解
一、 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。 在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。 1、全局变量的作用域是整个程序,在同一转载 2013-02-26 14:55:49 · 949 阅读 · 1 评论 -
c++ template 类模板特化
#include using namespace std;template class A{public: A(T a) { cout<<a<<endl; }};template <>class A //注意这里要加 { public: A(int* p) { cout<<*p<<endl; }原创 2013-02-26 11:39:20 · 519 阅读 · 0 评论 -
c++ template 类模板
网上学习来的例子:#include #include using namespace std; template class Stack;template class StackItem{public: T info; StackItem *next; StackItem(T x) { info = x; next = NULL; } fri原创 2013-02-26 10:58:15 · 473 阅读 · 0 评论 -
c++ template 函数模板
#include #include template T compare(const T &v1,const T &v2){ if(v1 < v2) return -1; if(v2 < v1) return 1; return 0;}int main(void) { int a = 5,b = 4;原创 2013-02-25 17:51:16 · 649 阅读 · 0 评论 -
c++ 重载操作符
针对重载操作符需要注意的地方很多,具体可以见c++ Primer或网上其他帖子,这些都需要理解性记忆,下面实例只作为解释什么是重载操作符。#include using namespace std;class person{private: int age; public: person(int a){ this->age=a;原创 2013-01-22 11:44:17 · 542 阅读 · 0 评论 -
c++ 合成的复制构造函数
如果没有定义复制构造函数,编译器会自动合成一个。与合成的默认构造函数不同,即使我们定义了其他构造函数,也会合成复制构造函数。合成复制构造函数会对成员逐个进行初始化,将新对象初始化为原对象的副本。编译器将原对象的每个非 static 成员,依次复制到正创建的对象。合成复制构造函数直接复制内置类型成员的值,类类型成员使用该类的复制构造函数进行复制。数组成员的复制要注意:虽然一般不能复制数组,但如果转载 2013-01-21 09:58:00 · 1654 阅读 · 0 评论 -
c++ 复制构造函数
#include #include using namespace std;class Fruit //定义一个类,名字叫Fruit{ string name; //定义一个name成员 string colour; //定义一个colour成员public: void print() //定义原创 2013-01-17 11:56:59 · 531 阅读 · 0 评论 -
c++ extra qualification
运行代码时候遇到了如下错误:extra qualification ‘Complex::’ on member ‘Complex’其代码如下: Complex::Complex(double r) { m_real = r; m_imag = 0.0; }E原创 2013-01-15 10:04:52 · 33676 阅读 · 0 评论 -
c++ 继承与静态成员
#includeusing namespace std; class Base{ public : static int getValue() { static int i = 0; i += 1; cout << i << endl; return i;原创 2013-01-28 18:24:26 · 1588 阅读 · 0 评论 -
c++ new delete
#include #include #include using std::string;using std::cin;using std::cout;using std::endl;int main(){ int *pia = new int[10]; int *pia2 = new int[10](); for(int i = 0 ;i <原创 2012-11-29 15:02:43 · 426 阅读 · 0 评论 -
c++ iterator
#include #include #include using std::vector;using std::string;using std::cin;using std::cout;using std::endl;int main(){ vector ivec(10); for (vector::iterator iter = ivec.begin()原创 2012-11-27 18:24:33 · 726 阅读 · 1 评论 -
c++ const
具体用法同c,见:http://blog.csdn.net/jianguo_liao19840726/article/details/7903996原创 2012-11-27 11:50:55 · 300 阅读 · 0 评论 -
c++ vector
#include #include using std::cout;using std::endl;using std::vector;int main(){ vector ivec; int val; for (vector::size_type ix = 0; ix != 10; ++ix原创 2012-11-27 18:13:57 · 3458 阅读 · 0 评论 -
c++ typedef
#include int main() { typedef double price ; price taobao_price = 3.10; std::cout << taobao_price << std::endl; }pateo@pateo-B86N53X:~/work/study$ g++ -o main main.ccpateo@pateo-B86N53原创 2012-11-27 13:47:07 · 483 阅读 · 0 评论 -
c++ enum
具体用法同c,见:http://blog.csdn.net/jianguo_liao19840726/article/details/7903853原创 2012-11-27 11:53:50 · 397 阅读 · 0 评论 -
c++ extern
具体用法同c,见:http://blog.csdn.net/jianguo_liao19840726/article/details/7794617原创 2012-11-27 11:43:38 · 384 阅读 · 0 评论 -
c++ HelloWord
#include using namespace std;int main(){ string str; cout << "plase enter you name\n"; cin >> str; cout << "Hello, " << str << "!\n"; }运行输出:pateo@pateo-B86N53X:~/work原创 2012-10-10 10:04:57 · 1092 阅读 · 1 评论 -
c++ 函数名后面的const
#include #include using std::string;using std::cin;using std::cout;using std::endl; class Text{ public: void printconst(void) const {cout<<"h原创 2012-11-29 16:59:44 · 2802 阅读 · 1 评论 -
c++ 读写文件
写文件#include #include using namespace std;int main(){ofstream out;out.open("com.txt",ios::trunc); //ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建int i;char a='a';for(i=1;i<=26;i++)//将26个数字及英文字母写入文原创 2012-12-25 14:29:57 · 697 阅读 · 0 评论 -
c++ vector 比较详细的用法
#include #include using std::cout;using std::endl;using std::vector;int main(){ vector ivec; for (vector::size_type ix = 0;ix != 10; ++ix) ivec.push_back(ix); cout << "i原创 2012-12-27 18:13:31 · 1551 阅读 · 0 评论 -
c++ 友元关系与继承
//友元关系的双向都是不可继承的#includeclass Base{ friend class Frnd;protected: int i;};class D1 : public Base{protected: int j;};class Frnd{public: int mem(Base b) { return b.i; }//ok int mem(D1 d)原创 2013-01-28 17:07:50 · 730 阅读 · 0 评论 -
c++ 析构函数
#include #include using namespace std;using std::string; class Item_base {public: Item_base(const std::string &book = "", double sales_price = 0.0): isbn(book),原创 2013-01-29 14:11:11 · 331 阅读 · 0 评论 -
c++ 继承关系的构造函数
向基类构造函数传递实参#include #include using namespace std;using std::string; class Item_base {public: Item_base(const std::string &book = "", double sales_price = 0.0):原创 2013-01-29 11:29:29 · 549 阅读 · 0 评论 -
C++句柄
我们知道C++中最令人头疼的当属指针,如果您申请了对象却没有释放它,时间一长就会造成系统崩溃,大量的内存溢出使得您的程序的健壮性出现问题而句柄类就是为了能够解决这一问题而出现的,句柄类有点类似于智能指针。好了,废话不多说,我们来看代码首先我们来看 sample.h文件的代码:/* * author:xizero00 * mail:xizero转载 2013-01-29 17:04:03 · 607 阅读 · 0 评论