C++ 学习
坚持到底cw
奋斗青年
展开
-
指针--引用--const
声明语句=基本数据类型+声明符。 声明符命名了一个变量并指定该变量为与基本数据类型有关的某种类型。一. 引用1. 定义引用时,程序把引用和它的初始值对象绑定在一起,而不是把初始值拷贝给引用。无法令引用重新绑定到另外一个对象。int ival = 2;int &refval = ival;2.引用必须初始化,初始值必须是一个对象而不能是字面值。3.引用不是对象,它只原创 2013-12-25 14:21:34 · 575 阅读 · 0 评论 -
继承与派生5:基类与派生类之间的转换
基类与派生类之间的转换C++有时在基类出现的地方需要派生类对象。这时,就需要将派生类对象转换为基类对象。基类与派生类之间的转换要求派生类对基类公有继承。1. 赋值派生类对象可以赋值给基类对象,这时是把派生类对象中从对应基类继承来的成员赋值给基类对象。不允许将基类对象赋值给派生类对象(编译时报错,因为派生类的新成员无值可赋)。例如:[cpp] view转载 2014-03-04 20:42:11 · 800 阅读 · 0 评论 -
C和C++混编2
例如1://test.cint fun(int a, int b){ returna+b;} //main.cpp#include #include "test.c"int main(){ printf("%d\n", fun(10, 11)); return0;}命令:g++ -o main main.cpp原创 2014-03-04 19:30:57 · 724 阅读 · 0 评论 -
继承与派生2:派生类的定义
派生类1. 继承、派生与多态继承与多态是面向对象程序设计中最重要的两个概念。面向对象程序设计允许从已有类派生出新的类,称为继承(inheritance).继承是面向对象程序设计中最重要的特征,也是支持代码重用(software reusability)的重要机制。通过继承,可以定义新类作为现有类的扩展。继承(inheritance):一个新类从已有类那里获得其已有特性,转载 2014-03-04 20:13:35 · 1799 阅读 · 0 评论 -
C和C++混编1
假设有下面这样三个文件:/* file: test_extern_c.h */ #ifndef __TEST_EXTERN_C_H__ #define __TEST_EXTERN_C_H__ #ifdef __cplusplus extern "C" { #endif extern int ThisIsTest(int a, int b); #ifdef _原创 2014-03-04 19:28:02 · 537 阅读 · 0 评论 -
c语言 读取文件内容 文件写入
#include #include #define MAXLEN 10240 //读取文件filename的内容到dest数组,最多可以读maxlen个字节 //成功返回文件的字节数,失败返回-1 int read_file(const char *filename, char *dest, int maxlen) {原创 2014-03-06 15:11:01 · 3568 阅读 · 0 评论 -
关键字
1. extern:声明变量而非定义它,不显示的初始化变量。extern int a;//声明a而非定义a.int b;//声明并定义b.extern语句如果包含初始值就不是声明而变成定义了。 extern double pi = 3.14;//定义变量能且只能被定义一次,可以被声明多次。2. nullptr:空指针int *p1 = nullptr;原创 2014-02-14 20:46:52 · 482 阅读 · 0 评论 -
继承与多态6:多态与虚函数
多态与虚函数1. 多态性一个函数可有多种实现形式。同一个函数可通过多种方法进行调用(或用一个相同的名字定义具有不同实现的函数)。由于1)派生类中同名函数的出现;2)基类指针可存放派生类对象地址和基类引用可作为派生类对象的别名,导致了派生类的多态。C++中支持两种多态性,即静态多态和动态多态。静态多态(也称为静态绑定static binding):编译时的多态转载 2014-03-04 20:58:16 · 772 阅读 · 0 评论 -
c++随机数
#include#include#includeusing namespace std;int main(){ int seed = time(NULL); srand(seed); int max,min; cout cin>>max>>min; int range=m原创 2014-04-09 14:53:12 · 521 阅读 · 0 评论 -
boost_filesystem
#include#includeusing namespace std;using namespace boost::filesystem;int main() { path p ="/home/ganji/chenwei/aa"; if(exists(p)){ if(is_empty(p)) { boost::filesystem::remove(p原创 2014-06-03 17:50:06 · 794 阅读 · 0 评论 -
c++拷贝构造函数
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。转载 2014-06-05 09:53:29 · 525 阅读 · 0 评论 -
c++ 读写
#include#include#include>using namespace std;void readfile(){ //逐词读取 ifstream fp("data.txt"); string word; while(fp>>word) { cout<<word<<endl; } fp.close();}void readfile1() {原创 2014-05-27 17:59:54 · 482 阅读 · 0 评论 -
继承与派生3:派生类的构造函数与析构函数
派生类的构造函数与析构函数与一般成员函数不同,派生类并不继承基类的构造函数和析构函数。在创建派生类对象时,系统要调用派生类的构造函数。由于派生类中包含从基类继承来的成员和派生类中新声明的数据成员,因此在执行派生类构造函数体前,系统首先要调用基类的构造函数对从基类继承来的数据成员初始化,而后再执行自己的函数体,对新增成员进行初始化。所以派生类构造函数必须调用基类构造函数。当派生类转载 2014-03-04 20:28:02 · 1413 阅读 · 0 评论 -
继承与派生4:派生类中对基类成员的重定义
派生类中对基类成员的重定义重定义:在派生类中可定义与基类成员同名的成员,此时在派生类中有两个同名的成员。同名成员:同名数据成员:同名同名成员函数:必须与基类成员函数具有相同原型说明(返回类型、函数名、参数类型与个数),否则为函数重载而非重定义。在一个类中不能定义两个函数原型说明完全相同的成员函数,重定义成员函数只能出现在具有继承关系的类中(派生类)。同名转载 2014-03-04 20:33:51 · 3458 阅读 · 0 评论 -
函数
1. 函数的返回类型不能是数组类型或者函数类型,但可以是指向数组或函数的指针。2. 局部静态对象static.3. 指针形参4. 传引用参数:可以改变实参的值。若无须改变引用形参的值,声明为常量引用。5. 形参的顶层const被忽略掉。void fun(const int i)与void fun(int i)是一样的。6. 尽量使用常量引用。int原创 2014-02-15 16:48:46 · 496 阅读 · 0 评论 -
CentOS 6.4 下源码安装gcc-4.8.1
1. 准备yum install glibc-static libstdc++-static -y 安装C和C++的静态库yum install gcc gcc-c++ 安装旧版本gcc, c++编译器; 2. 下载gcc4.8.1.tar.gz从官网http://gcc.gnu.org/ 中下载gcc-4.8.转载 2013-12-26 21:08:15 · 1171 阅读 · 0 评论 -
gcc与g++
gcc和g++都是GNU(一个组织)的编译器。1、对于.c后缀的文件,gcc把它当做是C程序;g++当做是C++程序;2、对于.cpp后缀的文件,gcc和g++都会当做c++程序。3、编译阶段,g++会调用gcc,对于c++代码,两者是等价的;4、连接阶段,通常会用g++来完成,这是因为gcc命令不能自动和c++程序使用的库连接。 gcc可以用来编译c++但是它不会自动调用链接原创 2014-02-21 23:19:08 · 940 阅读 · 0 评论 -
字符串 向量 数组
一. 标准库类型string1. 它表示可变长的字符序列,必须包含string头文件,命名在std中。#includeusing std::string;2. getline(is, s) :从is中读取一行赋给s,返回is。遇到换行符就结束读取操作。第三个参数可以设置终止符。3. size()函数返回的是一个string::size_type类型的值。strin原创 2013-12-26 23:45:56 · 859 阅读 · 0 评论 -
STL1
STL:标准模板库。STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adaptors)、算法(algorithms)、仿函数(functors)六个部分。在C++标准中,STL被组织为下面的13个头文件:algorithm>、deque>、functional>、iterator>、array>、vector原创 2014-02-24 23:05:02 · 518 阅读 · 0 评论 -
STL3-容器适配器
三个顺序容器适配器:stack,queue,priority_queue.一.Pop()删除栈顶元素,但是不返回其。Push(item)入栈Top()返回栈顶元素,但是不将其删除。二.Pop():返回首元素,但是不删除其。Front(),back():返回首元素或尾元素,但是不删除其。Push():在尾部插入元素。原创 2014-02-24 23:07:36 · 651 阅读 · 0 评论 -
STL2- 顺序容器
操作:1. swap(c1,c2)或c1.swap(c2):交换c1和c2中元素,c1和c2类型必须相同,它比c2向c1拷贝元素快得多。2. seq.assign(b,e)将seq中的元素替换为迭代器b和e表示范围内的元素。seq.assign(n,t)将seq中的元素替换为n个t。assign操作不适合关联容器和array。3. c.push_back(t),c.emplace_ba原创 2014-02-24 23:06:25 · 740 阅读 · 0 评论 -
STL4- 关联容器
元素是按关键字来保存和访问的。一.1.pair:保存两个数据成员分别为first和second。Map的元素就是pair。2.p.first:返回first数据成员 p.second:返回second数据成员。 make_pari(v1,v2):返回一个pair二.1.map中的元素是一些关键字-值对,关键字起到索引作用,值则表示与索引相关的数据。Map通常称为关原创 2014-02-24 23:08:25 · 694 阅读 · 0 评论 -
string
1. 标准库类型string表示可变长度的字符序列#includeusing namespace string;2. size()函数返回的是string::size_type类型,无符号值。3. 确保每个加号两侧的运算对象至少有一个是string4. cctype头文件中的函数5. for范围语句操作string6. 下标操作str原创 2014-02-14 20:41:49 · 395 阅读 · 0 评论 -
vector
1. vector表示对象的集合,vector是类模板。不存在包含引用的vector。#inclueusing std::vector;2. 如果循环体内包含有vector对象添加元素的语句,则不能使用范围for循环。范围for语句体内不应该改变其遍历序列的大小。3. size()函数返回类型为:vector ::size_type4. 添加元素push_bac原创 2014-02-14 20:43:03 · 512 阅读 · 0 评论 -
迭代器
1. 迭代器:访问string对象的字符或vector对象的元素。2. auto b = v.begin(); auto c= v.end()3. vector::iterator it; string::iterator it;vector::const_iterator it; string::const_iterator itauto it = v原创 2014-02-14 20:44:01 · 452 阅读 · 0 评论 -
数组
1. 数组的大小明确不变,不能随意向数组中增加元素。在编译时维度必须已知,维度必须是一个常量表达式。2. 定义数组时不能使用auto,不存在引用的数组。3. 用字符串字面值初始化字符数组时,注意字符串字面值的结尾处有一个空字符’\0’。char a1[] =”C++”;//自动添加空字符4. 不允许将数组的内容拷贝给其他数组作为初始值。int a1 = {1原创 2014-02-14 20:44:54 · 447 阅读 · 0 评论 -
c++程序性能优化学习
一.程序使用的内存区:1.全局/静态数据区2.常量数据区3.代码区4.栈:存储自动变量、局部变量、函数传递的参数值5.堆:动态分配的数据,new--delete,malloc--free 二.拷贝构造函数:1.默认拷贝函数不操作静态数据,默认拷贝函数执行的是浅拷贝(有指针时,需要深拷贝,自己写拷贝构造函数) CExample(const CExample& C);原创 2014-06-05 18:01:11 · 554 阅读 · 0 评论