C++
文章平均质量分 62
codersym
IT码农,技术爱好者。
展开
-
构造函数可以为虚函数吗?
答案当然是否定的,主要从一下两个角度加以说明。从存储空间角度 虚函数对应一个vtable,可是这个vtable其实是存储在对象的内存空间的。 那么问题来了,如果构造函数是虚函数,就要通过vtable来调用,可是对象空间还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。从使用角度 虚函数主要用于在信息不全的情况下,能够使重载的函数得到对应的调用。构造函数本身原创 2017-09-25 08:47:44 · 3836 阅读 · 0 评论 -
C++中的内联函数
本文主要和大家一起来学习一下C++中的内联函数,旨在能够更深层次的了解和掌握C++相关用法,力争做到知其然还要知其所以然。 关于内联函数,本文主要从以下几个方面进行了整理和归纳。 一、相关描述 1、内联函数主要目的是为了提高函数的执行效率,用关键字inline放在函数定义的前面即可,将函数指定为内联函数。 2、内联函数通常就是将它在程序中的每个调用点上“内联地”展开,例如定义比较两个数大小的原创 2017-10-04 21:21:30 · 394 阅读 · 0 评论 -
什么场景下会用到友元函数?
什么场景下会用到友元函数,友元函数的作用是什么,友元函数和普通成员函数又有怎样的区别?这都是C++当中的一些基本概念,掌握好了无论是维护项目还是做项目开发都大有裨益。本文主要浅谈一下C++中的友元函数,如有不足或者疏漏之处,烦请读者朋友及时指出,大家一起改进。 一、概述 友元函数在实现类之间数据共享时,可以减少系统开销,调高效率。比如:类A中的函数需要访问类B中的成员,那么类A中该函数要是类B的原创 2017-10-11 07:56:42 · 7160 阅读 · 0 评论 -
浅谈C++中的临时对象
本文主要总结了在C++开发过程中所遇到的临时对象产生的相关问题,如有不足或有误之处还希望读者朋友们能够及时之处。 三种常见的临时对象创建的情况:以值的方式给函数传参类型转换函数需要返回对象时一、以值的方式给函数传参 1、按值传递 按值传递时,首先将需要传给函数的参数,调用拷贝构造函数创建一个副本,所有在函数里的操作都是针对这个副本,也正是因为这个原因,在函数体力对该副本进行任何操作都不原创 2017-10-10 07:52:47 · 11250 阅读 · 6 评论 -
默认构造函数和构造函数重载
本文主要总结了默认构造函数的相关用法和构造函数重载,旨在能够对平时的项目开发起到一定的夯实基本功的作用,言简意赅,一目了然。首先需要了解构造函数是用来做什么?该类对象被创建时,编译器为对象分配内存空间,并自动调用该构造函数,由构造函数完成数据成员的初始化工作。一、默认构造函数从代码层面进行分析class testClass {public : testClass();//不带参数的默认原创 2017-09-29 08:15:52 · 14784 阅读 · 3 评论 -
C++赋值运算符重载函数和拷贝构造函数
一、提供默认赋值运算符重载函数的时机 当程序没有显示地提供一个以本类或者本类的引用为参数的赋值运算符重载函数时,编译器会自动生成这样一个赋值运算符重载函数。#include <iostream>using namespace std;class Data {public: Data() {} Data(int _data) :data(_data) {原创 2017-10-05 14:43:16 · 8316 阅读 · 0 评论 -
静态成员变量和静态成员函数在C++类中的作用
为了便于理解,我们先来说说面向过程设计中的static,对理解面向对象设计中的static多少会有些裨益,也可以加深大家对这方面知识的理解。面向过程中设计中的static主要从以下几个方面来进行说明:静态全局变量,在其他文件中可以定义相同的名字而不会发生冲突;静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到一下次的调用,直到下次赋值;静态函数只能在声明它的文件当中可见,不能被其他原创 2017-09-29 07:21:56 · 1754 阅读 · 1 评论 -
指针和引用什么时候用?
指针和引用到底什么时候用?通常情况下是根据不同场景来选择是使用指针还是引用,选择适合场景需求的才是一个优秀程序员所应具备的能力。 我们在做项目开发时,也会考虑到一个维护成本,如果你的前任是一个“高手”,写的代码你基本看不懂,无外乎两点原因,一是前任的问题,二是你自己的问题。所以平时养成一个好的习惯,修炼好内功自然能够以不变应万变。 一、概念 指针指向的是一块内存,它的内容是所指内存的地址;引用原创 2017-09-28 07:55:21 · 5290 阅读 · 0 评论 -
函数模板和类模板的用法
一、函数模板简介 函数体相同函数都可以用函数模板,根据实参类型替换虚拟类型。 如两个数比较大小:int max(int a,int b){ return a>b?a:b;}char max(char a,char b){ return a>b?a:b;}如果用函数模板实现,通用性和代码简洁性大大提高。#include <iostream>using namespace原创 2017-09-26 19:20:04 · 717 阅读 · 0 评论 -
C++多态性(二)
一、虚函数实现机制 1、编译器为每一个具有虚函数的类准备了一张虚函数表,表里面就有很多个虚函数,通过函数指针指向函数体代码。 2、只要类里面有虚函数,编译器就会给这个类的对象数据成员里面增加一个隐含的数据成员——指向虚函数表的指针。 3、在类的成员列表中多了一个指针成员,但是这个指针成员没有办法显示访问,只是为了寻找虚函数表。 4、示意图说明(结合之前多态例子理解) 二、虚析构函数 设计原创 2017-09-25 19:57:24 · 515 阅读 · 0 评论 -
什么情况下析构函数需要定义为虚函数?
一、什么情况下析构函数需要定义为虚函数?答案是在实现多态时。如果单单是填空题,相信大家都可以拿满分。但说到何谓之多态,可能大家的回答不尽相同。至于多态时怎样实现的?又有什么样的作用呢?这样深入逼问下去,可能到最后大家都没有朋友做了。 关于多态的相关介绍可以参考博主整理的文章,多态(一)和多态(二)稍加理解,后续有时间会陆续整理相关资料,和大家一起分享。 下面切入正题。二、为什么基类的析构函数是虚原创 2017-09-26 08:22:12 · 3308 阅读 · 2 评论 -
C++多态性(一)
概念 多态性可以简单的概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。实现方法 C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖,或者称为重写(重写成员函数和重写虚函数,只有重写虚函数才能体现C++多态性)。多态的作用 封装可以使得代码模块化,继承可以扩展已存在的代码,而多态的目的是为了接口重用。原创 2017-09-22 09:22:11 · 954 阅读 · 0 评论 -
私有构造函数的作用
一、背景知识 对class本身来说,可以利用它的static共有成员,因为它们独立于class对象之外,不必产生对象也可以使用class的私有域。可以参考静态成员变量和静态成员函数在C++类中的作用来进行理解。二、相关说明 构造函数被class私有化,需要创建对象就必须能够访问到class的私有域,static共有成员可以做到。假如在某个static函数中创建了该class的对象,并以引用或者指原创 2017-10-12 07:34:05 · 9241 阅读 · 0 评论