c++基础学习
主要是记录学习c++基础时的笔记
还好江南
这个作者很懒,什么都没留下…
展开
-
day8-11 类模板碰到友元函数-类外实现(注意点有点多)
代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <string> using namespace std; //让编译器提前看到printPerson声明 //让编译器看到Person类声明 template<class T1, class T2> class Person; template<class T1, class T2>void printPerson(Person&l原创 2020-06-03 09:52:43 · 178 阅读 · 0 评论 -
day7-多态的理解
知识点 图解 2.多态原理解析 2.1.当父类中有了虚函数后,内部结构就发生了改变 2.2内部多了一个 vfprt - 2.2.1.virtual function pointer 虚函数表指针 - 2.2.2指向 vftable 虚函数表 - 2.3父类中结构 vfptr &Animal::speak 2.4 子类中 进行继承 会继承 vfptr vftable 2.5 构造函数中 会将虚函数表指针 指向自己的虚函数表 2.6 如果发生了重写,会替换掉虚函数表中的原有的spea原创 2020-05-29 19:46:47 · 130 阅读 · 1 评论 -
day7-函数指针
内容 func函数名其实是代表函数的入口地址 决定的函数的类型应该是:函数的返回值 函数的参数列表 代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> int arr[10]; //决定的函数的类型应该是:函数的返回值 函数的参数列表 void func() { printf("hello world!"); } //func原创 2020-05-29 19:40:19 · 78 阅读 · 0 评论 -
day6-11 菱形继承的概念以及问题(虚基类)
内容难点 菱形继承问题以及解决 12.1解决问题利用虚基类 12.2sheepTuo内部结构 12.2.1vbptr 虚基类指针 12.2.2指向一张 虚基类表 12.2.3通过表找到偏移量 12.2.4找到共有的数据 代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Animal { public: int m_Age; }; //虚基类 Sheep clas原创 2020-05-29 15:18:43 · 89 阅读 · 0 评论 -
day6-09 继承中静态成员的处理
内容难点 重点:静态成员变量是所有对象共用的,只有一份,不会为每一个对象都分配一个不同的值。然而我以前一直理解的是静态成员变量是所以类共用,这次真的学到了。 继承中类似非静态成员函数处理 如果想访问父类中的成员,加作用域即可 代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Base { public: static void func() { cout <<原创 2020-05-29 10:58:04 · 86 阅读 · 0 评论 -
day5-拷贝构造函数调用中遇到的问题
代码解析 拷贝构造函数 //拷贝构造 MyArray::MyArray(const MyArray& array) { cout << "拷贝构造调用" << endl; this->pAddress = new int[array.m_Capacity]; this->m_Size = array.m_Size; this->m_Capacity = array.m_Capacity; for (int i = 0; i < array.原创 2020-05-27 20:53:00 · 83 阅读 · 0 评论 -
day4-07 const 修饰成员函数
内容 常函数 常对象 7.1常函数 void func() const {}常函数 7.2常函数 修饰是this指针const Type * const this 7.3常函数 不能修改this指针执行的值 7.4常对象 在对象前 加入 const修饰 const Person p1 7.5常对象 不可以调用普通的成员函数 7.6常对象 可以调用常函数 7.7用mutable修饰的关键字是在常函数可以修改的 代码 #define _CRT_SECURE_NO_WARNINGS #include<原创 2020-05-27 15:37:50 · 79 阅读 · 0 评论 -
day4-05 this指针的使用
笔记 代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; // this可以解决命名冲突 class Person { public: Person( int age) { this->age = age; } //对比年龄 void compareAge( Person & p) { if (this->age == p.age ) { c原创 2020-05-27 10:58:24 · 72 阅读 · 0 评论 -
day4-01 静态成员变量和静态成员函数
笔记 静态成员变量和静态成员函数 1.1静态成员变量 1.1.1编译阶段分配内存 1.1.2所有对象共享数据 1.1.3通过对象访问、通过类名访问 1.1.4有权限控制 1.1.5类内声明 类外初始化 静态成员函数 1.2.1可以访问静态成员变量,不可以方法普通成员变量 1.2.2普通成员函数 都可以访问 1.2.3静态成员函数也有权限 1.2.4可以通过对象访问,也可以通过类名进行访问 代码 #define _CRT_SECURE_NO_WARNINGS #include<iostrea原创 2020-05-26 22:17:25 · 127 阅读 · 0 评论 -
day2-07 深拷贝和浅拷贝
图解 代码解析 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Person { public: Person() {} //初始化属性 Person(char * name,int age) { m_Name = (char*)malloc(strlen(name) + 1); strcpy(m_Name, name); m_age = age; }原创 2020-05-26 22:04:45 · 169 阅读 · 1 评论 -
day1-09 const分配内存情况
代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <string> using namespace std; //1、const分配内存 取地址会分配临时内存 //2、extern 编译器也会给const变量分配内存 void test01() { const int m_A = 10; int * p = (int*)&m_A; //会分配临时内存 } //3、 用普通变量初始化 cons原创 2020-05-26 22:01:49 · 187 阅读 · 0 评论 -
day3-09 类对象作为成员
代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <string> using namespace std; class Phone { public: Phone() { cout << "手机的默认构造函数调用" << endl; } Phone(string name) { cout << "手机的有参构造调用" << endl;原创 2020-05-26 15:55:20 · 131 阅读 · 1 评论 -
北大MOOC - 程序设计与算法(三)第六周测验
第六周学习的主要内容是虚函数和多态 1:看上去像多态 描述,程序填空产生指定输出 #include <iostream> using namespace std; class B { private: int nBVal; public: void Print() { cout << "nBVal="<< nBVal << ...原创 2020-04-07 22:54:50 · 488 阅读 · 0 评论 -
北大MOOC - 程序设计与算法(三)第五周测验
第五次课主要是学习的类的继承和派生,联系前面几次课学的类基础,构造函数,拷贝构造函数,析构函数,运算符重载等知识。 本周测试共4道题,其中第三道题 《魔兽世界* 装备》不要求提交。 第一道题: 1:全面的MyString 程序填空,输出指定结果 #include <cstdlib> #include <iostream> using namespace std; int s...原创 2020-03-22 11:47:14 · 1037 阅读 · 1 评论 -
北大MOOC - 程序设计与算法(三)第四周测验
1:MyString 补足MyString类,使程序输出指定结果 #include <iostream> #include <string> #include <cstring> using namespace std; class MyString { char * p; public: MyString(const char * s) { if( s...原创 2020-03-18 11:33:08 · 798 阅读 · 0 评论 -
北大MOOC - 程序设计与算法(三)第三周测验
1:返回什么才好呢 程序填空,使其按要求输出 #include <iostream> using namespace std; class A { public: int val; A(int // 在此处补充你的代码 }; int main() { int m,n; A a; cout << a.val << endl; while(cin &...原创 2020-03-17 10:34:47 · 2031 阅读 · 0 评论 -
北大MOOC - 程序设计与算法(三)第二周测验
复习C++类和对象的知识做的,其中第三题考查了类型转换构造函数,第四题考查的析构函数,都非常简单。 让我感到棘手的是第一题中如何读入一个带有空格的字符串,最后解决方案是发现了cin.getline()函数。其次是要使用一个char c来存储用于分隔的逗号。eg:输入是mao mao,18,8092,80,80,80,80 你使用cin.getline(name,20,’,’);cin>>...原创 2020-03-14 21:35:39 · 773 阅读 · 0 评论 -
北大MOOC - 程序设计与算法(三)第一周测验 4:神秘的数组初始化
4:神秘的数组初始化 描述 填空,使得程序输出指定结果 #include using namespace std; int main() { int * a[] = { // 在此处补充你的代码 }; *a[2] = 123; a[3][5] = 456; if(! a[0] ) { cout << * a[2] << "," << a[3][5]; ...原创 2020-03-14 15:38:12 · 297 阅读 · 0 评论 -
中国大学MOOC程序设计与算法(三)笔记:第一周 从C到C++
第一周 从C到C++ 1.引用 2.const关键字 3.动态内存分配 4....原创 2020-03-05 21:39:23 · 174 阅读 · 0 评论 -
c++学习:多态案例之计算图形面积
虚函数 在类的定义中,前面有 virtual 关键字的成员函数就是虚函数。 例如: class base { virtual int get() ; }; int base::get() { } virtual 关键字只用在类定义里的函数声明中, 写函数体时不用。 多态的表现形式一 派生类的指针可以赋给基类指针。 通过基类指针调用基类和派生类中的同名虚函数时: (1)若该指针指向一个基类...原创 2020-03-04 15:44:21 · 3050 阅读 · 0 评论 -
c++学习:多态案例之魔法门英雄无敌
题目 游戏:魔法门之英雄无敌 游戏中有很多种怪物,每种怪物都有一个类与之对应,每个怪物就是一个对象 类: CSoldier CDragon CPhonex CAngel 怪物能够互相攻击,攻击敌人和被攻击时都有相应的动作,动作是通过对象的成员函数实现。 问题:游戏升级时,需要添加新的怪物–雷鸟,如何编程才能使得升级的时候代码改动和增加量较小 新增类:CThunderBird 1 为每个怪物...原创 2020-03-04 15:35:54 · 876 阅读 · 0 评论