![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 56
雪下的那么认真
Just go!
展开
-
C++多态为什么只有指针或引用能实现
测试程序:#include <iostream>using namespace std;class Base {public: Base() {} virtual void fun() { cout << "Base" << endl; }};class D :public Base{public: D() :val(0) {} void fun() { cout << "D" << endl原创 2022-04-08 16:48:48 · 1563 阅读 · 0 评论 -
C++多态实现原理
C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚...原创 2020-05-03 00:46:53 · 166 阅读 · 0 评论 -
从子类访问父类的私有函数
虚函数 c private f1 it 众所周知,c和c++的数组都是不安全的,因为无论c还是c++都不提供数组边界检查功能,这使得数组溢出成为可能。从某个意义上说,c和c++是一种缺少监督的语言,然而这也正是其魅力所在。c++给予程序员更大的自由,相比于使用JAVA编程的束手束脚,c++程序员拥有了更大的权力,同时也拥有更多的机遇来玩弄一些技巧,比如说,从子类调用父类的私有函数。从子类调用父类的...转载 2020-05-02 23:08:12 · 1890 阅读 · 0 评论 -
C++中基类的析构函数不是虚函数,会带来什么问题!!
示例如下:#include <iostream>using namespace std; class Father{public: Father(){cout<<"contructor Father!"<<endl;}; ~Father(){cout<<"destructor Father!"<<endl;...转载 2020-05-02 19:47:36 · 1241 阅读 · 0 评论 -
【C++】intialization list 和 assignment
intialization list指的是初始化列表.Assignment 指的是赋值.什么是初始化列表:构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。class foo{ string name; int id; foo(string s, int i):name(s), id(i)...转载 2020-05-02 18:09:32 · 593 阅读 · 0 评论 -
protobuf repeated类型的使用
protobuf是Google开发的一个序列化框架,类似XML,JSON,基于二进制,比传统的XML表示同样一段内容要短小得多。通过protobuf,可以很轻松的调用相关方法来完成业务数据的序列化与反序列化。protobuf repeated类型相当于std的vector,可以用来存放N个相同类型的内容,文章将简单介绍protobuf repeated的使用。首先定义一个protobuf结构,...转载 2020-03-25 19:18:37 · 2299 阅读 · 0 评论 -
深拷贝与浅拷贝的区别
拷贝有两种:深拷贝,浅拷贝当出现类的等号赋值时,会调用拷贝函数在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅拷贝是可行的。但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象。所以,这时,必须采用深拷贝。深拷贝与浅拷贝的区别就在...原创 2020-03-12 09:42:41 · 353 阅读 · 0 评论 -
c语言值传递,地址传递,引用传递(引用传递只适用于c++)
总结:对于函数来说:值传递就是一个人来了,给你一些数据,你对数据处理。对那个人自身的数据没有影响。地址传递就是给你一个地址,你通过这个地址找到一个人,然后直接对这个人手中的数据进行处理。引用传递就是你要通过名字直接对一个人进行处理,但你不知道那个人叫什么,就先起个随便的名字(引用形参)。谁来了,他的别名就是这个名字(这个形参就代表传递过来的那个变量,是同一个东西)。通过名字可以对人...转载 2019-12-28 14:36:28 · 716 阅读 · 0 评论 -
C++不能用const对象调用非const方法
今天在写程序时遇到了一个报错:error C2662: 'x' : cannot convert 'this' pointer from 'const class Point3d' to 'class Point3d &'先看下代码:#include <stdio.h>#include <stdlib.h>#include <iostream...转载 2019-03-22 10:18:40 · 1808 阅读 · 0 评论 -
[转]C++创建对象new与不new
C++ 创建对象C++在创建对象的时候可以采用两种方式:(例如类名为Test) Test test 或者 Test* pTest = new Test()。这两种方法都可以实例化一个对象,但是这两种方法有很大的区别,区别在于对象内容所在的内存空间不同,众所周知,内存的分配方式有三种(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,...转载 2019-03-11 10:12:31 · 771 阅读 · 0 评论