
C++基础知识
文章平均质量分 86
胜天半子_王二_王半仙
胜天半子——王二——王半仙儿是也
展开
-
C++基础知识,多重继承,虚基类,虚继承
派生类继承构造函数如果基类含多个构造函数,多数情况下,派生类一般会集成所有构造函数,以下几种情况比较特殊1、如果你在派生类中定义的构造函数与基类构造函数有相同的参数列表,那么从基类中继承的会被覆盖掉也就是只继承了及部分构造函数2、拷贝,移动构造函数不会被继承3、using classA::classA,这不属于自己定义构造函数,编译器还是会合成一个默认的无参构造函数,但是这样声明了之后,...原创 2019-11-08 15:42:31 · 520 阅读 · 0 评论 -
C++基础知识,对象移动,拷贝构造函数,移动拷贝构造函数,赋值运算符,移动赋值运算符
如果没耐心看详细的讲解,直接到最下面看一个统一的例子使用到的类:class classB{public: int val1;public: classB() :val1(100) { cout << "B类构造函数执行了" << endl; }; //拷贝构造函数 classB(const classB& obj) :val1(obj....原创 2019-11-07 15:56:01 · 959 阅读 · 0 评论 -
C++基础知识,减少临时变量,提升效率,类外运算符
i++,++i的讨论引题临时对象都是右值//临时对象//i++,右值,会产生一个临时对象,//如何保存这个临时对象int i = 0;int&& saveI = i++;//这样写的话,这个临时变量就会一直保存到程序结束,saveI和i之间没有什么关系为什么减少临时变量能提升系统效率呢?要知道临时对象是存贮在栈中的,如果写代码的时候能减少临时变量的产生,将会...原创 2019-11-06 00:12:53 · 738 阅读 · 0 评论 -
C++基础知识 ,RTTI(run time type identification),dynamic_cast(),typeid
1)dynamic_cast()将基类指针安全的转化为派生类指针2)typeid运算符,返回指针,引用所指对象的实际类型如果想要让这两个RTTI运算符正常工作,那么基类中至少要有一个虚函数否则结果就可能跟预测结果不一样,因为只有虚函数存在,系统内部才会产生虚函数表,对象中多一个虚函数指针,会指向基类中的虚函数表,虚函数表中会有说明该类的详细信息dynamic_cast:当用父类 指针 ...原创 2019-11-04 15:11:20 · 123 阅读 · 0 评论 -
C++基础知识,友元函数,友元类,友元成员函数
用到的类class B{private: int data; friend class A;//这里他虽然没有找到A类,但并不会报错public: void printData() { std::cout << data << std::endl; }};class A{public: void testMethod(int data, B&...原创 2019-11-04 12:30:02 · 242 阅读 · 0 评论 -
C++11基础知识,基类指针,派生类指针,虚函数,纯虚函数
0、用到的类的声明定义:human.h,huamn.cpp,man.h,man.cpp,woman.h,woman.cpp类在:C++基础知识,C++11中的多态和重载,函数遮蔽,using多态的引入其他类:abstractFather.h#ifndef __ABSTRACTFATHER__#define __ABSTRACTFATHER__class abstractFather...原创 2019-11-04 11:23:59 · 749 阅读 · 0 评论 -
C++基础知识,C++11中的多态和重载,函数遮蔽,using多态的引入
试验类的定义:Human.h#ifndef __HUMAN__#define __HUMAN__class Huamn{public: Huamn(); Huamn(int); void SameNameMethod(); void SameNameMethod(int);public: int a;};#endif // !__HUMAN__Human.cpp#...原创 2019-11-04 08:22:01 · 272 阅读 · 0 评论 -
C++基础知识,运算符重载
h:#ifndef TESTCLASS__H#define TESTCLASS__Hclass testClass{public:int a;int b;int c;char* p;//无参构造函数testClass();//运算符重载testClass& operator=(const testClass&);//构造函数testClass(int,...原创 2019-11-03 16:01:33 · 176 阅读 · 1 评论 -
C++基础知识学习,类的各种构造方法详解,拷贝构造函数详解
类相关的非成员函数函数的声明写在类的声明外部,在定义文件中去实现testClass.hclass testClass{}void printSomething(testClass& myClass);#endif testClass.cppvoid printSomething(testClass& myClass){ std::cout <<...原创 2019-10-30 08:32:42 · 141 阅读 · 0 评论 -
C++基础知识学习,类的各种构造方法详解,拷贝函数详解
类相关的非成员函数函数的声明写在类的声明外部,在定义文件中去实现testClass.hclass testClass{}void printSomething(testClass& myClass);#endif testClass.cppvoid printSomething(testClass& myClass){ std::cout <<...原创 2019-10-29 22:20:00 · 181 阅读 · 0 评论 -
C++基础知识学习,static详解,类的标准写法,类的隐式类型转换,构造函数初始化列表,const函数
声明文件的类与变量的不同.h文件中,类的声明文件(包含防卫式头)可以在多个cpp文件中引用 但是如果声明的是变量,多个cpp文件都include的话,一定会报错 不要问为什么,就是这样设计的从第一个有默认值的参数开始,之后的参数都必须有默认值类通过构造方法的隐式转换如果一定义一个类,像通过这样一种方式直接初始化类className abc = 12那么你可以通过构造方法实现test...原创 2019-10-29 14:26:06 · 160 阅读 · 0 评论 -
C++基础知识学习,四种强制类型转换,static_cast,dynamic_cast,const_cast,reinterpret_cast
//函数类型强制类型转换 //这是c的转换,只不过C++支持罢了 int a = int(5.5);c++强制类型转换,4种static_castdynamic_castconst_castreinterpret_cast使用方法强制类型转换名<targetType>(sourceValue);static_caststatic_cast:静态转换,就理解...原创 2019-10-27 20:18:44 · 200 阅读 · 0 评论 -
C++基础知识学习,vector,迭代器,精彩演绎
定义以及初始化 //vector里面能装任何类型,但是不能装引用,因为引用就不是一个类型 //定义和初始化 vector<string> myVector1; myVector1.push_back("abc"); myVector1.push_back("def"); //拷贝 vector<string> myVector2(myVector1); ...原创 2019-10-27 18:41:14 · 190 阅读 · 0 评论 -
C++基础知识学习,string的构造方法,string与char数组的互换,提升string的遍历效率
创建方法string s1;//默认未空串string s2 = "I love China";string s3("I love China");string s4(7, 'a');//7个a一些常用函数//一些常用用法//empty()if (s1.empty()){ cout << "yes" << endl;}//length/size(...原创 2019-10-27 15:47:27 · 286 阅读 · 0 评论 -
C++基础知识学习,函数的各种特殊用法,inline函数,const的特殊用法
函数声明时,可以只有参数类型,没有参数名字void testMethod1(int, string);函数实现时,用不到的参数,可以只有参数类型,没有参数名字void testMethod1(int a, string){ cout << a << endl;}函数的后置返回类型auto testMethod2(int a, char b)->vo...原创 2019-10-26 21:06:01 · 254 阅读 · 0 评论 -
C++基础知识学习,指针传递,类和结构体的区别,类的标准写法
指针传递struct student{ int id; char name[100];};//接受的是指针void func1(student* ptr){ //指针的'->'和对象的'.'是一样的 ptr->id = 2; strcpy_s(ptr->name, sizeof(ptr->name), "will");}int main(){ ...原创 2019-10-26 19:15:33 · 255 阅读 · 0 评论 -
C++基础知识学习,范围for语句,提升遍历效率;动态内存分配问题;nullpter;
范围for语句,提升遍历效率范围for语句,提升遍历效率原本的遍历用法int v[] = { 1,2,3,4,5,6,7,8,9,10 };for (auto x : v){ cout << x << endl;}上面这个遍历方法,实际上执行了拷贝过程,他要将v数组里面的每个项拷贝到x中,然后输出x的值怎么解决这个问题呢?引用下面这个就没有执行拷贝,而...原创 2019-10-26 18:30:37 · 406 阅读 · 0 评论 -
C++基础知识学习,防卫式文件头,变量初始化定义,auto,引用·,常量的问题,constexpr编译时求值常量
防卫式文件头如果你创建了一个文件head1.h和head2.h,如下:head1.h#include "head2.h"int abc1 = 2;head2.hint abc2 = 2;然后再main中如下:#include "test1.h"#include "test2.h"using namespace std;int main(){ cout<<a...原创 2019-10-26 15:32:56 · 225 阅读 · 0 评论