![](https://img-blog.csdnimg.cn/f8cd05bf16bf4f76959f90586a892510.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++ Primer学习
文章平均质量分 74
C++基础系列,适合新手入门
NewSuNess
积极,努力
展开
-
C++基础(C++Primer学习)
C++基础(十三)<第十三章—继承与动态内存分配>问题:继承是怎样与动态内存分配进行互动的,如果基类使用动态内存分配,并重新定义赋值和复制构造函数,对派生类将产生什么影响?1、创建一个基类:头文件#pragma once#include"list.h" //一些基本的库class BaseDma{private: char* label; int rating;public: BaseDma(const char* la = NULL, int ra = 0); Ba原创 2021-12-14 19:37:18 · 899 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(十二)<第十一章—动态联编与静态联编、抽象类>一、联编程序调用函数时,将源代码中的函数调用解释为执行特定地函数代码块称为函数名联编。在编译过程中进行联编被称为静态联编。然而虚函数以及函数重载地存在使得静态联编出现困难,因为编译器可能不知道到底使用的是哪一个函数。编译器生成能够在程序运行时选择正确地虚方法地代码,被称为动态联编,又称为晚期联编。如果派生类不重新定义基类的方法,也不需要使用动态联编。在这些情况下,使用静态联编更合理,效率也更高。C++编译器默认使用静态联编。1原创 2021-12-11 16:48:34 · 390 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(十一)<十一章 类的继承----多态公有继承>如果希望同一个方法在派生类和基类中的行为不同,方法的行为应取决于调用该方法的对象。这种复杂的行为称为多态------具有多种形态,即同一个方法的行为随着对象不同而改变。有两种重要的机制可用于实现多态公有继承:在派生类重新定义基类方法使用虚方法思考:这里的多态的意思就是对于一个函数来说,我们希望赋予他更多的功能,使得对象不同实现的功能也不同。使用虚方法的办法时使用关键字virtual来修饰函数,使其成为一个虚函数。1、构建基类原创 2021-12-10 15:43:40 · 816 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(十)<第十三章 类的继承>类的继承使得类能够从已有的类派生出新的类,而派生类继承了原有类(基类)的特征,包括方法。一、创建一个基类与其派生类上面说了派生类可以继承基类的特征和方法,下面先创建一个类,然后在其基础上创建一个派生类(在Python里面,这对关系叫父类与子类,基类作为父类)。1、首先创建基类的头文件及.cpp文件头文件:#pragma once#include"list.h"class Tabtenn{private: string firstnam原创 2021-12-09 21:04:37 · 393 阅读 · 2 评论 -
C++基础(C++Primer学习)
C++基础(九)动态内存和类一、创建类包含new和delete方法动态内存的好处就是不会造成内存浪费,即用多少开辟多少。C++使用new和delete运算符来动态控制内存。在之前的学习当中都没有使用new和delete来管理内存,在这次将会添加该种类型。注:使用new开辟动态内存之后,那么析构函数就是必须得了,要在析构函数当中使用delete来释放内存。1、创建头文件代码:#pragma once#include"list.h"class Stringbad{private: cha原创 2021-12-08 19:45:26 · 505 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(八)<第十一章>类的自动转换一、类的自动转换以及强制类型转换创建书上的例子来完成学习,这里要用到一个单位转换的概念:即一英石等于14磅。创建头文件:#pragma once#include"list.h"class stonewt{private: enum{Lbs_per_stn=14}; // static const int Lbs_per_stn = 14; 两种创建常量的方式 int stone; //英石表示 double pds_left; /原创 2021-12-08 16:29:02 · 499 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(七)创建带矢量的类与模拟随机漫步一、常用的友元:重载 << 运算符1、对 <<进行重载,使之能与cout一起来显示对象的内容。首先,<< 本身就是一个可重载的运算符,而C++中已经对其重载很多次了。在ostream类中对<<进行了重载,将其转换成了一个输出工具。而 cout是一个ostream类的对象,他是智能的,能够识别所有的C++基本类型。如果在类内部重载运算符,由于运算符左侧规定为调用对象,因此就不能再写cout<<,假定原创 2021-12-07 16:07:51 · 1090 阅读 · 0 评论 -
C++基础(C++Primer学习)
C++基础(六)第十一章 类的使用一、运算符重载在之前的博客笔记当中已经介绍过运算符重载以及怎样实现运算符重载,这里不再赘叙。书上的例题:计算时间,一个运算符重载实例。首先创建一个类以及其中的成员函数声明,因为我们的习惯是将类声明在头文件当中,类的成员函数定义在一个单独的cpp文件中,如果使用Visual Stdio的话,点击项目->添加类,编辑器就会自动创建头文件,.cpp文件,同时在头文件中写好类的框架????。1、类的声明#pragma once#include<iost原创 2021-12-06 21:37:31 · 738 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(五)C++的类(继续)上一节的补充:在创建类对象的时候,如果在类名前加上const关键字来修饰,那么创建的对象其中的数据就是不可被修改的。const Stock num3("abc", 123, 212); //创建了一个const型的对象num3.show(); //报错对于const型的类对象,编译器无法确保调用成员函数会不会对数据成员进行修改,因此不允许这样写代码,解决的办法就是在声明与定义类成员函数的时候,也使用const关键字进行修饰。void show() cons原创 2021-12-05 18:37:48 · 1433 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(四)C++的类(接上部分)思考:之前写的代码风格不好。按照习惯来说,应该把类函数地声明放在类地内部,但是定义放在cpp文件当中,而类地声明则放在头文件当中,这样使得代码看起来更加整齐,结构清晰。从这一节笔记开始,已经从C++Primer转战C++PrimerPlus了????。一、创建一个新的类1、在头文件中创建一个新的类class Stock{private: std::string company; long shares; double share_val; dou原创 2021-12-04 18:12:36 · 1497 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(三)类型转换与C++的类(部分)一、C++中的类型转换在C++中,某些类型之间有关联,因此他们之间可以进行数据转换,对于算术运算,比如一个整型与一个浮点型相加,C++会就根据类型规则设法将运算对象的类型统一,这种操作称为隐式转换。1、显式转换有时我们希望将对象强制转换为另外一种类型,这种方法称为强制类型转换。命名的强制类型转换。cast_name<type> (expression)type就是我们希望的类型,expression是目标值,cast_name是sta原创 2021-12-02 21:29:41 · 656 阅读 · 1 评论 -
C++基础(C++Primer学习)
C++基础(二)一、迭代器(iterator)介绍使用下标可以访问string对象的字符或者vector对象的元素,而除此之外还有一种方式可以实现这样的操作,就是迭代器。1、使用迭代器和指针不一样的是,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员。标准容器的迭代器运算符如下:*iter ; //返回迭代器所指元素的引用iter->mem ; //解引用iter并获取该元素名为mem的成员++iter ; //指向容器中的下一个元素iter1 !=(==)it原创 2021-12-01 13:42:31 · 4685 阅读 · 3 评论 -
C++基础(C++Primer学习)
C++基础(一)1、字面值常量字面值常量就是形如“42”,“1”等显而易见的值,每一个字面值常量都对应一种数据类型,比如字符型,整形,浮点型等等。对于整形字面值,我们可以写作十进制数、十六进制数或者八进制数,定义方式如下:int a = 10; //十进制int a = 010; //八进制int a =0x10; //十六进制对于字面值的类型,还可以通过添加前缀或者后缀来改变其默认的类型。2、C++中的复合类型复合类型是指基于其他类型定义的类型,这里主要介绍----引用和指针引用为对原创 2021-11-30 21:22:47 · 1391 阅读 · 1 评论