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 · 211 阅读 · 0 评论 -
day7-多态的理解
知识点图解2.多态原理解析2.1.当父类中有了虚函数后,内部结构就发生了改变2.2内部多了一个 vfprt- 2.2.1.virtual function pointer 虚函数表指针- 2.2.2指向 vftable 虚函数表- 2.3父类中结构 vfptr &Animal::speak2.4 子类中 进行继承 会继承 vfptr vftable2.5 构造函数中 会将虚函数表指针 指向自己的虚函数表2.6 如果发生了重写,会替换掉虚函数表中的原有的spea原创 2020-05-29 19:46:47 · 174 阅读 · 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 · 90 阅读 · 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;};//虚基类 Sheepclas原创 2020-05-29 15:18:43 · 100 阅读 · 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 · 114 阅读 · 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 · 89 阅读 · 0 评论 -
day4-07 const 修饰成员函数
内容常函数 常对象7.1常函数 void func() const {}常函数7.2常函数 修饰是this指针const Type * const this7.3常函数 不能修改this指针执行的值7.4常对象 在对象前 加入 const修饰 const Person p17.5常对象 不可以调用普通的成员函数7.6常对象 可以调用常函数7.7用mutable修饰的关键字是在常函数可以修改的代码#define _CRT_SECURE_NO_WARNINGS#include<原创 2020-05-27 15:37:50 · 91 阅读 · 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 · 80 阅读 · 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 · 139 阅读 · 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 · 240 阅读 · 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 · 213 阅读 · 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 · 174 阅读 · 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 · 518 阅读 · 0 评论 -
北大MOOC - 程序设计与算法(三)第五周测验
第五次课主要是学习的类的继承和派生,联系前面几次课学的类基础,构造函数,拷贝构造函数,析构函数,运算符重载等知识。本周测试共4道题,其中第三道题 《魔兽世界* 装备》不要求提交。第一道题:1:全面的MyString程序填空,输出指定结果#include <cstdlib>#include <iostream>using namespace std;int s...原创 2020-03-22 11:47:14 · 1065 阅读 · 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 · 812 阅读 · 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 · 2051 阅读 · 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 · 787 阅读 · 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 · 309 阅读 · 0 评论 -
中国大学MOOC程序设计与算法(三)笔记:第一周 从C到C++
第一周 从C到C++1.引用2.const关键字3.动态内存分配4....原创 2020-03-05 21:39:23 · 181 阅读 · 0 评论 -
c++学习:多态案例之计算图形面积
虚函数在类的定义中,前面有 virtual 关键字的成员函数就是虚函数。例如:class base { virtual int get() ;};int base::get(){ }virtual 关键字只用在类定义里的函数声明中, 写函数体时不用。多态的表现形式一派生类的指针可以赋给基类指针。通过基类指针调用基类和派生类中的同名虚函数时:(1)若该指针指向一个基类...原创 2020-03-04 15:44:21 · 3100 阅读 · 0 评论 -
c++学习:多态案例之魔法门英雄无敌
题目游戏:魔法门之英雄无敌游戏中有很多种怪物,每种怪物都有一个类与之对应,每个怪物就是一个对象类: CSoldier CDragon CPhonex CAngel怪物能够互相攻击,攻击敌人和被攻击时都有相应的动作,动作是通过对象的成员函数实现。问题:游戏升级时,需要添加新的怪物–雷鸟,如何编程才能使得升级的时候代码改动和增加量较小 新增类:CThunderBird1 为每个怪物...原创 2020-03-04 15:35:54 · 917 阅读 · 0 评论