三级学习C++
文章平均质量分 57
chosen13
这个作者很懒,什么都没留下…
展开
-
智能指针
templateclass smart_pointer{public: smart_pointer(T* pData) : m_pRawPointer(pData){} // 复制构造函数, smart_pointer(const smart_pointer & anotherSP); // 赋值 = smart_pointer& operator=(const smart_原创 2016-03-28 21:23:34 · 228 阅读 · 0 评论 -
友元与继承
#include using namespace std;class Base{ friend class Frnd;protected: int i;};class D1 : Base{private: int j;};class Frnd{public: int mem(Base b) { return b.i; } //int men(D1 c) {原创 2016-03-24 20:47:27 · 266 阅读 · 0 评论 -
派生类转换成基类
#include #include using namespace std; class Item_base { public: //int x; Item_base(const string &book = "", double sales_price = 0.0) : isbn(book),price(sales_price){}原创 2016-03-24 20:24:35 · 435 阅读 · 0 评论 -
构造函数与析构函数举例
#include using namespace std;enum BREED {GOLDEN,CAIRN,BUAG};class Mammal{public: Mammal(); ~Mammal(); // 存取器成员函数, int GetAge() const {return itsAge;} void SetAge(int age) { itsAge = age;原创 2016-03-24 19:28:24 · 512 阅读 · 0 评论 -
派生类的析构函数
#include using namespace std;class Base{public: Base() { b1 = b2 = 0; } Base(int i, int j); ~Base(); void Print() { cout << b1 << ", " << b2 << ", "; }private: int b1,b2;};Base:原创 2016-03-24 18:52:35 · 306 阅读 · 0 评论 -
派生类的构造函数
#include using namespace std;class 老子{ // 成员:很多行代码,public: int X;};class 小子 : public 老子{ // 新的成员,public: int Y;};class Base1{public: Base1(int i) { b1 = i; cout << "Base1的构造函原创 2016-03-23 21:56:48 · 275 阅读 · 0 评论 -
公有的、私有的、受保护的继承
#include using namespace std;class A{public: // 共有的, A() { a = 9; b = 8; c = 7; } int a; int a2;protected: // 受保护的, int b;private: // 私有的, int c;};class B1 : public A原创 2016-03-23 21:00:49 · 517 阅读 · 0 评论 -
多态绑定
#include #include using namespace std;class Item_base{public: //int x; Item_base(const string &book = "", double sales_price = 0.0) : isbn(book),price(sales_price){} string book() const //原创 2016-03-23 19:59:52 · 212 阅读 · 0 评论 -
基类和派生类
#include #include using namespace std;class Animal{ };class Dog : public Animal //class Dog : public Animal这里的(:)就是继承或派生, { };class Cat : public Animal{};class Item_base{public原创 2016-03-23 14:19:09 · 246 阅读 · 0 评论 -
转换操作符 和转换函数
#include #include using namespace std;class Dog{public: Dog(string n, int a, double w):name(n),age(a),weight(w){} operator int() const // 转换函数, { return age; } operator double() const原创 2016-03-22 22:16:16 · 252 阅读 · 0 评论 -
静态成员与基类
#include using namespace std;class A{public: static std::size_t object_count() { return 100; }protected: static const std::size_t obj_count = 80;};// 基类中的static 成员,在整个继承层次中只有一个实例,class原创 2016-03-24 21:27:16 · 446 阅读 · 0 评论 -
纯虚函数与抽象类
#include using namespace std;// 这个类是抽象类-抽象数据类型,// 任何包含一个或多个纯虚函数的类都是抽象类,不应创建这个类的对象,应该继承它,务必覆盖从这个类继承的纯虚函数,class Shape{public: Shape() {} virtual ~Shape() {} // virtual 代表的是虚的, virtual double原创 2016-03-25 20:26:10 · 270 阅读 · 0 评论 -
纯虚函数与抽象类2
#include using namespace std;enum COLOR { Red, Green, Blue, Yellow}; // 这是创建枚举,class Animal{public: Animal(int); virtual ~Animal(){ cout << "Animal 析构函数被调用...\n"; } virtual int GetAge() co原创 2016-03-25 22:08:13 · 176 阅读 · 0 评论 -
自己创建一个异常
#ifndef STACK_H#define STACK_H#include #include templateclass Stack{protected: std::deque c;public: class ReadEmptyStack : public std::exception //exception 是标准异常, { public: virtual原创 2016-03-28 19:50:46 · 628 阅读 · 0 评论 -
out_of_range 标准异常
#include #include using namespace std;class 学生{public: 学生(int 年龄) { if(年龄 150) throw out_of_range("年龄不能小于0或大于150"); this->年龄 = 年龄; }private: int 年龄;};int main(){ try { 学生 小原创 2016-03-28 19:00:11 · 2856 阅读 · 0 评论 -
invalid_argument 非法参数的异常
#include #include #include #include // stdexcept 是invalid_argument的头文件,using namespace std;int main(){ try { string s("1010110001"); bitset b(s); // bitset 是二进制 cout << "bitset ok" <<原创 2016-03-28 18:48:41 · 7196 阅读 · 0 评论 -
标准异常
#include #include // new头文件表示标准异常bad_allocusing namespace std;class Dog{public: Dog() { parr = new int[1000000]; // 4MB }private: int *parr;};int main(){ Dog *pDog; try { fo原创 2016-03-28 18:36:52 · 221 阅读 · 0 评论 -
异常层次结构
#include using namespace std;const int DefaultSize = 10;// 动态数组,class Array{public: Array(int itsSize = DefaultSize); ~Array() { delete [] pType; } // 运算符重载, int& operator[] (int offSet)原创 2016-03-28 13:43:33 · 237 阅读 · 0 评论 -
异常处理方法
#include int my_cp(const char * src_file, const char * dest_file){ FILE *in_file, *out_file; in_file = fopen(src_file,"rb"); // r是读 b 是二进制, if(in_file == NULL) { return 1; } out_file = fop原创 2016-03-26 20:37:19 · 323 阅读 · 0 评论 -
函数模板
#include #include #include #include using namespace std;template // 这是函数模板,其中typename还可以是class而这个class是用来做模板参数, T 是随便起了个名字,T 就代表任意类型int compare(const T &v1, const T &v2){ if(v1 > v2) return原创 2016-03-26 19:39:39 · 236 阅读 · 0 评论 -
顺序队列的类模板与泛型编程
#ifndef _顺序队列_H#define _顺序队列_Htemplate // 模板类,T是用来创建动态数组,class Queue{public: Queue(int queueCapacity = 10); // 队列的数量存储10个 bool IsEmpty() const; // 这是判断队列是不是空的, T& Front() const; // 这个是读取队原创 2016-03-26 14:24:22 · 306 阅读 · 0 评论 -
链式队列的类模板与泛型编程
#ifndef 链式队列_H_#define 链式队列_H_templateclass Queue{public: Queue(); ~Queue(); bool isEmpty() const; const Object & getFront() const; void enqueue(const Object & x); // enqueue 是入列,是针对于队列的是先原创 2016-03-26 17:09:14 · 352 阅读 · 0 评论 -
二元谓词的重载2
#include #include #include #include using namespace std;class CCompareStringNoCase // 这是一个不分大小写的二元谓词的类,{public: bool operator() (const string& str1,const string& str2) const { string str原创 2016-03-22 20:28:35 · 213 阅读 · 0 评论 -
二元谓词的重载
#include #include #include using namespace std;template // 二元谓词的重载class CMultiply // 乘法{public: elementType operator() (const elementType& elem1,const elementType& elem2) { return elem1原创 2016-03-22 20:00:11 · 290 阅读 · 0 评论 -
一元函数对象的函数重载
#include #include #include using namespace std;template // 这个模板函数判断是不是几的倍数,这个就是一元谓词大量的使用在STL算法中,struct IsMultiple{ numberType m_Divisor; IsMultiple(const numberType& divisor) { m_Diviso原创 2016-03-22 19:40:21 · 236 阅读 · 0 评论 -
友元 友元函数及类
#include #include using namespace std;class Screen; // 这个是Screen 的声明,class Dog // 这个是类Dog的定义,{public: int foo(Screen& screen); /*int koo(Screen& screen); */// 这个不能用友元函数调用私有成员函数,};class原创 2016-03-19 10:36:49 · 222 阅读 · 0 评论 -
类的构造函数
#include #include using namespace std;class Person{public: Person(const std::string &nm) :name(nm), age(18) // 这是构造函数,构造函数没有返回值,名称和类的名称一样,可以在后边用(:)来初始化参数,这个比在函数体里边写执行的速度要快, // 类中必须要有构造函数,要原创 2016-03-17 22:30:38 · 148 阅读 · 0 评论 -
类的作用域
#include #include using namespace std;class First{public: int memi; double memd;public: void doC() { memi = 22; } void doD() { doC(); }};class Screen{public: typedef std::str原创 2016-03-17 18:53:11 · 207 阅读 · 0 评论 -
特殊工具与技术
#include #include using namespace std;class Item_base{public: virtual double net_price(size_t n) const { return n * price; }public: std::string isbn;protected: double price;};class原创 2016-03-29 19:53:01 · 242 阅读 · 0 评论 -
多继承与虚函数
#include using namespace std;enum COLOR { Red, Green, Blue, White};class Animal{public: Animal(int); virtual ~Animal() { cout << "Animal 析构函数被调用...\n"; } virtual int GetAge() { return itsAg原创 2016-03-29 15:21:39 · 192 阅读 · 0 评论 -
名称空间
#ifndef _BS_H#define _BS_H#include //在头文件里边就不要使用using namespace std 要使用哪一个就直接用,如下边的例子所示的,namespace Bookstore // 这个是名称空间,{ class Sales_item // 这个是类的声明, { public: Sales_item(const std::stri原创 2016-03-29 13:37:15 · 182 阅读 · 0 评论 -
隐含的this指针
#include #include using namespace std;class Person{public: Person(const std::string &nm, const std::string &addr) { this->address = addr; this->name = nm; } std::string getName()const原创 2016-03-16 22:11:14 · 346 阅读 · 0 评论 -
类的定义3
#include #include using namespace std;class Screen; // 类声明,class LinkScreen{ Screen *window; LinkScreen *next; LinkScreen *prev;};class Y;class X{ // 各种成员略private: Y *ptr;};cla原创 2016-03-16 18:40:54 · 315 阅读 · 0 评论 -
类的定义2
#include #include using namespace std;class Screen{public: typedef std::string::size_type index; // 用index代替所有的std::string::size_type就是使用类型别名简化类, Screen(index ht = 0, index wd = 0) :contents原创 2016-03-16 16:49:08 · 206 阅读 · 0 评论 -
static 静态成员
#include using namespace std;// 全局变量//double interestRate;class Account{public: Account(std::string name, double money) :owner(name), amount(money){} double getAmount() const { return t原创 2016-03-19 13:11:16 · 258 阅读 · 0 评论 -
复制构造函数和赋值操作符
#include #include #include using namespace std;class Sales_item{public: //公有成员 //构造函数 Sales_item() :units_sold(0), revenue(0.0) { cout << "默认的构造函数被调用了," << endl; } Sales_item(const s原创 2016-03-19 14:49:19 · 209 阅读 · 0 评论 -
析构函数
#include #include using namespace std;class NoName{public: NoName() :pstring(new std::string), i(0), d(0) { // 打开文件 // 连接数据库 // 动态分配内存 cout << "构造函数被调用了," << endl; } NoName(const No原创 2016-03-19 21:21:15 · 191 阅读 · 0 评论 -
重载函数调用操作符
#include #include #include #include using namespace std;struct absInt // 这也是一个类,{ // 重载操作符:函数调用操作符 int operator() (int val) { return val < 0 ? -val : val; }};template // 这是一个普通的模板函数原创 2016-03-22 19:14:46 · 242 阅读 · 0 评论 -
自增自减操作符
#include using namespace std; class String{public: String(char const *chars = ""); String(String const &str); ~String(); void display() const; String &operator++(); // 这个是前加价,返回的是原创 2016-03-22 14:34:30 · 214 阅读 · 0 评论 -
解引用和箭头操作符
#include #include "string.h"#include "pointer.h"using namespace std;int main (){ String s("xiaocui"); s.display(); String *ps = &s; // 这个是普通的指针,普通的指针容易产生野指针, ps->display(); try { Poin原创 2016-03-22 13:32:20 · 886 阅读 · 0 评论