【C++ 常函数修改数据成员一题】教程文章相关的互联网学习教程文章

c++友元函数、友元类、友成员函数【代码】【图】

友元函数:不是类成员函数,是一个类外的函数,但是可以访问类所有成员。class Point{ public:friend void fun(Point t);//友元函数private:int a; protected:int b; };void fun(Point t) {t.a = 100;t.b = 2000;cout << t.a << "" << t.b << endl; }int main() {Point test;fun(test);system("pause");return0; }运行结果:友元类:类A是类B的友元类,则A就可以访问B的所有成员(成员函数,数据成员)。(类A,类B无继承关系)cla...

【面试】C++类中的相关函数【构造,拷贝构造,析构,友元】

构造函数:值的初始化,可带参数,无返回值,可重载,可存在多个析构函数:释放对象内存空间,无参数,无返回值,不可重载,只能存在一个拷贝构造函数:拷贝对象,其形参必须是引用1.空类会默认添加哪些东西?怎么写?空类的大小是多少?为什么?1)Empty():默认构造函数2)Empty(const Empty&):拷贝构造函数3)~Empty():析构函数4)Empty& operate=(const Empty&):赋值运算符空类的大小为1,因为C++要求类的每个实例必须具有独一...

C++ 虚析构函数【代码】

Virtual 关键字起到什么作用借鉴网友blog, 了解了虚析构函数的作用:  虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。  也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的。  c++中的函数调用默认不适用动态绑定,要触发动态绑定,必须满足两个条件:第一指定为虚函数; 第二通过基类类型的引用或指针调用 Virtual...

2015级C++第4周项目 函数【代码】【图】

【项目1-求最大公约数】 参考解答 (1)输入两个数,并求出其最大公约数#include <iostream>usingnamespacestd; //自定义函数的原型(即函数声明)int main() {int a,b,g;cin>>a>>b;g=gcd(a,b);cout<<"最大公约数是: "<<g;return0; } int gcd(int x,int y) //定义用于求两数的最大公约数的函数,函数只管求值。输出由main完成 {}  (2)在上面程序基础上,增加函数gcds函数的声明和定义,实现求4数最大公约数的功能int gcds(int ...

scanf函数和cin的区别、类的数组、C++排序函数【代码】

给定n个字符串,将这n个字符串按照字典序进行排列,此处用排列函数是C++的库函数sort,产生如下两个疑问,望大佬解答#include <iostream> #include <algorithm> #include <string> #include <vector>usingnamespace std; /* ********************************************** Q1:为什么定义类的数组,无法用sort函数排序呢? 会出现数组越界的情况,求解答 ********************************************* int main() {string str[1...

C和C++中泛型编程 - 适应不同类型参数的函数

首先一个简单的问题,如何实现交换两个整数的值? 想必每个有编程经验的人都能作答。C语言用指针实现如下:void swap(int * a, int * b){int tmp = *a;*a = *b;*b = tmp; } C++可以使用引用实现如下: void swap(int & a, int & b){int tmp = a;a = b;b = tmp; } 顺便记录另外两个很有意思的实现,不用中间变量tmp (面试中可能会问到): void swap(int & a, int & b){a = a + b;b = a - b;a = a - b; }void swap(int & a, int & ...

C++中的Inline函数【代码】

在大多数机器上,函数调用does a lot of work:在调用函数前保存寄存器,调用结束后利用寄存器恢复现场;需要复制函数参数;程序跳转到新的位置执行...内敛函数(inline function)则没有这个问题,简单的我们可以这样理解:Inline即“In line” 为什么说“In line”呢,先看内敛函数的声明:// inline version: find the shorter of two strings inline conststring & shorterString(conststring &s1, conststring &s2) { re...

【ThinkingInC++】52、函数内部的静态变量

/** * 书本:【ThinkingInC++】 * 功能:函数内部的静态变量 * 时间:2014年9月17日18:06:33 * 作者:cutter_point */#include "../require.h" #include <iostream>using namespace std;char oneChar(const char* charArray=0) {const static char* s; //自动初始化为0,这个const表示这个指针指向的是char类型的指针,//不能变成其他的指针类型或变成非指针,地址可以变,类型不能变,而且这个只初始化一次if(charArray){s=charArray...

C++虚函数

1.在一般情况下,指向一种类型对象的指针不允许指向另一种类型的对象,然而指向基类对象的指针可以指向该基类的共有派生类对象(反过来不成立),这是运行时,多态的基础。指向基类队象的指针指向派生类对象后,可以访问派生类中有基类继承下来的成员,但不能访问那些派生类对象自己增加的成员。2.一个含有虚函数的类称为多态类。3.虚函数就是在一个类中用virtual定义的成员函数。基类的虚函数在派生类中仍是虚函数,并且一般在派生...

C++类对象的拷贝构造函数分析

对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=100;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include <iostream>using namespace std;class CA{ public:  CA(int b)  {   a=b;  }  void Show ()  {   cout<<a<<endl;  } private:  int a;};int main(){ CA A(100); CA B=A; B.Show (); return 0;}运行程序,...

C++成员变量、构造函数的初始化顺序 [转]

C++成员变量、构造函数的初始化顺序 一、C++成员变量初始化1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行2、static 静态变量(本地化数据和代码范围):static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。在这种性质上理解,有点类似于全局变量的唯一性。函数体内static变量的作用范围时该函数体,不同于auto变量,...

C++语言笔记系列之十五——派生类、基类、子对象的构造和析构函数调用关系

例子 example 1 注:若一个基类同时派生出两个派生类,即两个派生类从同一个基类继承,那么系统将为每一个简历副本,每个派生类独立地使用自己的基类副本(比如基类中有属于自己类的静态变量等)。 #include <iostream.h> class Person { public: person() {cout<<"Construction of person."<<endl;} ~person() {cout<<"Destruction of person."<<endl;} }; class Student:public person { public: student() {cout<<"...

c++map按value排序--将map的pair对保存到vector中,然后写比较仿函数+sort完成排序过程。

map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value。这样一来,我们可以根据学生姓名快速的查找到他的成绩。 但是,我们除了希望能够查询某个学生的成绩,或许还想看看...

C++ Primer中文版(第五版)——第六章 函数

6.1函数基础 一个典型的函数定义包括以下几个部分:返回类型(return type)、函数名字、由0个或多个形参组成的参数列表以及函数体。其中,形参以逗号隔开,形参的列表位于一对圆括号之内。函数执行的操作在语句块中说明,该语句块称为函数体。 我们通过调用运算符(call operator)来执行函数。调用运算符的形式是一对圆括号,它作用于一个表达式,该表达式是函数或者是指向函数的指针;圆括号之内是一个用逗号隔开的实...

c++ cout格式化输出函数详解【代码】

这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步而言,您还可以在<sstream>、<fstream>上使用这些格式化操作,从而代替sprintf和fprintf函数。为方便描述,下文仅以cout为例进行介绍。 一、综述 cout是STL库提供的一个iostream实...