C++
C++相关知识点
Panrison
新生代搬砖人
展开
-
C++ 之友元
友元在程序中,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。友元机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以friend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方。友元的三种实现:1)全局函数做友元;2)类做友元;3)成员函数做友元一. 友元函数(全局函数做友元)友元函数是指某些虽然不是类成员函数却能够访问类的所有成员的函数。类授予它的友元特别的访问权,这样该友元函数就能访问到类中的所有成员。#include <转载 2021-09-01 21:37:09 · 123 阅读 · 0 评论 -
C++ 之菱形继承
菱形继承一.什么是菱形继承如上图,菱形继承即多个类继承了同一个公共基类,而这些派生类又同时被一个类继承。这种继承被称为菱形继承,或者钻石继承。这么做会引发什么问题呢,让我们来看一段代码吧!#include<iostream>using namespace std;class Base{protected: int _base;public: void fun() { cout << "Base::fun" << endl; }};cla转载 2021-09-01 20:07:38 · 3310 阅读 · 0 评论 -
C/C++中的内存四区
C/C++中的内存四区C++程序在执行时,将内存大方向划分为4个区域:代码区:存放函数体的二进制代码,由操作系统进行管理的。全局区:存放全局变量、静态变量以及常量。栈区:由编译器自动分配释放,存放函数的参数值,局部变量等。堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。内存四区的意义:不同区域存放的数据,赋予不同的生命周期,使我们的编程更大的灵活性。在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域一. 代码区存放 CPU 执行的机器指令,存放可执行文件原创 2021-08-27 15:15:52 · 116 阅读 · 0 评论 -
在线编程常见的输入输出模式(1)
求和模式1输入描述: 输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。输出描述: 输出a+b的结果输入例子1:1 510 20输出例子1:630#include <iostream>using namespace std;int main(){ int a,b; while(cin>>a>>b) { cout<<a+b<<endl;原创 2021-09-23 17:28:09 · 264 阅读 · 0 评论 -
C++中的 public,protected,private的区别
C++中的 public,protected,private的区别一. 无继承关系不考虑继承时,三者的访问权限如下:类内类外public可以访问可以访问protected可以访问不可以访问private可以访问不可以访问由上表可知,protected的权限与private相同,均为可被本类方法访问,不可被外部访问。因此无继承关系时,protected可被private替代。二.有继承关系...原创 2021-09-01 19:28:31 · 138 阅读 · 0 评论 -
C++ 二维数组与二维向量的长度
二维数组int num[2][3]={{1,2,3},{4,5,6}};int total=sizeof(num)/sizeof(int); //元素总个数int cols=sizeof(原创 2021-09-28 21:44:29 · 1467 阅读 · 0 评论 -
实现类string构造函数、 拷贝构造函数、赋值函数、析构函数、运算符重载、字符串反转、排序
实现类string构造函数、 拷贝构造函数、赋值函数、析构函数、运算符重载、字符串反转、排序,补全其中的函数实现部分(请勿改动其他代码)#include<iostream>#define _CRT_SECURE_NO_DEPRECATE //vs编译器可能不支持sprintf,strcpy等函数/*实现类string构造函数、 拷贝构造函数、赋值函数、析构函数、运算符重载、字符串反转、排序,补全其中的函数实现部分(请勿改动其他代码)*/class string{priv原创 2021-09-22 19:53:20 · 357 阅读 · 0 评论 -
C++ 之 拷贝构造函数的调用时机
C++拷贝构造函数调用时机通常有三种情况:使用一个已经创建完毕的对象来初始化一个新对象值传递的方式给函数参数传值以值方式返回局部对象#include<iostream>using namespace std;class Person {public: int mAge;public: Person() { cout << "无参构造函数" << endl; } Person(int age) { cout <<原创 2021-09-22 21:16:19 · 288 阅读 · 0 评论 -
C++中struct和class的区别
C++中struct和class的区别C++中的struct对C中的struct进行了扩充,它不再只是一个包含不同数据类型的数据结构。struct和class一样,也能包含成员函数,能继承,能实现多态。它和class最本质的一个区别就是默认的访问控制,体现在两个方面:1.默认的继承访问权限。struct是public的,class是private的。struct A{int a;};struct B : A{int b;};如上所示,这个时候B是public继承A的。如果都将上面的s原创 2021-12-21 15:30:34 · 736 阅读 · 0 评论 -
vector 的越界错误
C++标准库中vector容器的遍历是非常常见的,除了用迭代器遍历以外,很多人也非常喜欢直接用下标,如下:这样做没有问题,注意循环判断语句,i < v.size(),i从0一直遍历到v.size()-1,估计会有人喜欢把循环改成如下这样:这段代码仅仅是把上面的i < v.size() 改成了 i ......转载 2022-06-11 16:45:38 · 1672 阅读 · 0 评论