![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++基础语法
Monster__Chen
从零开始
展开
-
C++基础语法学习(2)
1.面向对象语言开发效率高,运行效率下降百分之十左右2.private 私有,类内部调用 protected 受保护(用于继承) public 公有,内外都可以调用3.class中默认是私有权限 struct 中默认是公有的4.constructor 构造函数①不用用户调用,系统自动调用②名字与类名相同③无返回值(c++中唯一无返回值的函数) ...原创 2018-07-23 17:10:17 · 141 阅读 · 0 评论 -
含有虚函数,虚继承的类的大小
当类中含有虚继承时(在vs环境下,linux环境下有歧义)1. 派生类对象中会添加一个指针,该指针指向虚继承的基类,称为虚类指针(cPtr)。每一个指针只指向其中一个虚继承的类,也就是说,虚继承了几个类,就会有几个cPtr。 2. 父类当中的成员变量、虚函数指针(vPtr)、虚类指针(cPtr)仍然会被复制到派生类当中。但在不同继承模式下,vPtr和cPtr的效果是不同的。 ...原创 2018-08-02 14:55:24 · 653 阅读 · 0 评论 -
C++语法学习(7)
1.函数模板函数模板由模板说明和函数定义构成模板说明的类属参数至少在函数定义中出现一次函数参数表中可以使用类属类型参数,也可以使用普通类型2.函数模板不允许自动类型转化普通函数能够进行自动类型转换3.当函数模板遇到普通函数1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 如果函数模板可以产生一个更好的匹配,那么选择模板 4 可以通过空...原创 2018-08-01 19:32:51 · 156 阅读 · 0 评论 -
C++语法学习(6)
1.函数重写在子类中定义与父类中原型相同的函数函数重写只发生在父类与子类之间重载与重写区别:重载:同一个作用域; 子类无法重载父类函数,父类同名函数将被覆盖; 重载是在编译期间根据参数类型和个数决定;重写:发生于父类、子类之间; 父类和子类函数有相同的函数原型; 使用virtual关键字声明后能够产生多态; 运行期间根据具体对...原创 2018-07-30 19:45:26 · 190 阅读 · 0 评论 -
C++基础语法学习(4)
1. 如果能作为左值则返回引用,例如a+b不能作为左值,a=b可作为左值,a++不能作为左值,其返回一个值,是常量,++a可作为左指,返回a这个变量2.当无法修改左操作数的类时,使用全局变量进行重载,如<<和>>,因为无法修改ostream和istream,只能用友元函数进行重载,若用成员函数,成员变量会作为左值,而在cout中,成员变量只能作为右值,发生冲突3.=...原创 2018-07-27 10:58:22 · 195 阅读 · 0 评论 -
关于有些运算符只能用成员函数重载
1.=,[],(),->只能通过成员函数来重载C++规定赋值运算符“=”只能重载为类的非静态成员函数,而不可以重载为类的友元函数。不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员。而赋值运算符“=”是基于对象操作的。那么为什么赋值运算符不可以重载为类的友元函数?像同样都是双目运算符的+为什么它就可以呢?...原创 2018-07-27 10:12:16 · 25111 阅读 · 9 评论 -
C++基础语法学习(5)
1.继承应用的场景1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。 2) 当你需要创建多个类,它们拥有很多相似的成员变量或成员函数时,也可以使用继承。可以将这些类的共同成员提取出来,定义为基类,然后从基类继承,既可以节省代码,也方便后续修改成员。2.三种继承方式1) public继承方式基类中...原创 2018-07-29 09:39:34 · 238 阅读 · 0 评论 -
C++基础语法学习1
1.命名空间 namespace 为什么要使用命名空间:一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。::作用域限定符 用来限定变量的所属域 2.c++中可以使用 for(int i = 0; i <10; i++)循环,C语言中会语法报错,此...原创 2018-07-19 10:28:08 · 245 阅读 · 0 评论 -
C++基础语法学习(3)
1.对象初始化列表:当成员变量是一个对象,且该对象没有无参构造函数1.必须这样做:如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错。 2、类成员中若有const修饰,必须在对象初始化的时候,给const ...原创 2018-07-24 21:08:03 · 677 阅读 · 0 评论 -
C++语法学习(8)
1.序列式容器(Sequence containers) 每个元素都有固定位置--取决于插入时机和地点,和元素值无关。 vector、deque、list 关联式容器(Associated containers) 元素位置取决于特定的排序准则,和插入顺序无关 set、multiset、map、multimap2.迭代器从作用上来说是最基本的...原创 2018-08-08 16:01:19 · 172 阅读 · 0 评论