c++
GaoChuang_
平平凡凡程序员
展开
-
初始化列表
一、类中的const变量#include<stdio.h>class Test{private: const int ci; //ci只读变量public: Test() { // ci=10; // error ci只读变量 } int getCI() { return ci; } };int main(){ Test t; printf原创 2021-11-16 19:54:43 · 140 阅读 · 0 评论 -
对象的构造下
一、特殊的构造函数1.无参构造函数 没有参数的构造函数 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空/*问:下列类中有什么?*/class T{ //至少有一个编译器默认提供的构造函数 T(){},};2.拷贝构造函数 参数为constclass_name&的构造函数 当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数,简单的进行成员变量的值复制二...原创 2021-11-16 19:51:54 · 71 阅读 · 0 评论 -
构造函数中
一、带有参数的构造函数、 --- 构造函数可以根据需要定义参数 --- 一个类中可以存在多个重载的构造函数 ---构造函数的重载遵循C++重载的规则class Test{public: Test(int v) { //use v to initialize member }};二、对象的定义和对象的声明不同 .对象定义 --申请对象的空间并调用构造函数 ...原创 2021-11-16 19:50:59 · 371 阅读 · 0 评论 -
对象的构造上
一、对象中的成员变量的初始值是多少? 对象的初始化: 从程序设计的角度,对象只是变量,因此 ----在栈上创建对象时,成员变量初始值为随机值 ----在堆上创建对象时,成员变量初始值为随机值 ----在静态存储区创建对象时,成员变量初始为0值#include<stdio.h>class Test{private: int i; int j;public: int getI(...原创 2021-11-16 19:45:50 · 88 阅读 · 0 评论 -
类的真正形态
一、类的关键字 1.struct在C语言中已经有了自己的含义,必须继续兼容 2.在C++中提供了新的关键字class用于类定义 3.class和struct的用法完全相同二、class与struct的区别 1.在用struct定义类时,所有的成员默认访问级别为public 2.在用class定义类时,所有成员的默认访问级别为private#include<stdio.h>struct...原创 2021-11-16 19:44:30 · 493 阅读 · 0 评论 -
类与封装的概念
一、类的组合二、类的封装 .类通常分为以下两个部分 --类的实现细节 --类的使用方式.封装的基本概念 --根据经验并不是类的每个属性都是对外公开的 --而一些类的属性是对外公开的 --必须在类的表示法中定义属性和行为的公开级别 ...原创 2021-11-16 19:43:05 · 1776 阅读 · 0 评论 -
经典问题解析
一、关于const的疑问1.const常量的判别准则 --- 只用用字面量初始化的const常量才会进入符号表 --- 使用其它变量初始化的const常量仍然是只读变量 --- 被volatile修饰的const的常量不会进入符号表,只是的得到一个只读变量,而这个只读变量不能出现在赋值符号的左边 注意:在编译期间不能直接确定初始值的const标识符,都被作为只读变量处理2.const引用的类型与初始化变量的类型 --相...原创 2021-11-16 19:41:34 · 459 阅读 · 0 评论 -
新型类型的转换
一、C语言强制类型转换 1.C方式强制类型转换存在的问题 ---过于粗暴 .任意类型直接都可以进行转换,编译器很难判断其正确性 ---难于定位 .在源码中无法快速定位所有使用强制类型转换语句可以编译通过,运行后发生段错误:#include <stdio.h>typedef void(PF)(int);struct Point{ int x; int y;};int main(){ ...原创 2021-11-16 19:39:42 · 203 阅读 · 0 评论 -
C++中的新成员
一、动态内存分配1.C++中的动态内存分配 --C++中通过new关键字进行动态内存申请 --C++中的动态内存申请是基于类型进行的 --delete关键字用于内存释放 变量申请:Type* pointer = new Type;//....delete pointer; 数组申请:Type* pointer = new Type[N];//.....delete[] pointer;二、new关键字与m...原创 2021-11-16 19:38:02 · 99 阅读 · 0 评论 -
函数重载分析下
一、重载与指针1.函数重载遇到函数指针(需要考虑返回值类型) 将重载函数名赋值给函数指针时 1.1 根据重载规则挑选与函数指针参数列表一致的候选者 1.2严格匹配候选者的函数类型与函数指针的函数类型 注意: 函数类型需要和函数指针所指向的类型完全一致#include<stdio.h>#include<string.h>int func(int x){ return x;}int func(int ...原创 2021-11-16 19:35:29 · 78 阅读 · 0 评论 -
函数重载分析上
一、重载概念 在同一标识符在不同的上下文有不同的意义二、函数重载 1. 用同一个函数名定义不同函数 2. 当函数和不同的参数搭配时函数的意义不同/*函数名形同但是执行的函数体不同*/int func(int x){ return x;}int func(int a ,int b){ return a+b;}int func(const char* s){ return strlen(s);}3.函数重...原创 2021-11-15 20:06:14 · 253 阅读 · 0 评论 -
函数参数的扩展
一、函数参数的默认值1. C++中可以在函数声明时为参数提供一个默认值2. 当函数调用时没有提供任何参数的值,则使用默认值 int mul(int x = 0) int main() { printf("%d\n",mul()); //mul(0) } int mul(int x) { return x*x; }3.参数的默认值必须在函数声明中指定#include<stdio.h>...原创 2021-11-15 20:03:52 · 214 阅读 · 0 评论 -
内联函数分析
一、内联函数 1. C++中推荐使用内联函数代替宏代码片段 2. C++中使用inline关键字声明内联函数inline int func(int a ,int b) { return a<b ? a:b;} 内联函数声明时,inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。 3. C++编译器可以将一个函数进行内联编译 4. 被C++编译器内联编译的函数叫做内联函数 5. C++编译器直接将函数体插入...原创 2021-11-15 20:02:11 · 89 阅读 · 0 评论 -
进化后的const分析
一、C语言中的const 1. const修饰的变量是只读的,本质上还是变量 2. const修饰的局部变量在栈上分配空间 3. const修饰的全局变量在只读存储区分配空间 4. const只在编译期有用,在运行期无用 const修饰的变量不是真正的常量,它只是告诉编译器该变量不能出现在赋值符号的左边。原创 2017-06-25 09:00:04 · 276 阅读 · 0 评论 -
布尔类型和引用
一、C++中布尔类型 1. C++在C语言的基本类型系统之上增加了bool 2. C++中的bool可取的值只有true和false 3.理论上bool只占用一个字节注意: true代表真值,编译器内部用1来表示 false代表非真值,编译器内部用0来表示 4.bool类型只有true(非0)原创 2017-06-25 09:06:41 · 567 阅读 · 0 评论 -
C到C++的升级
一、C与C++关系 1.C++继承所有C特性 2.C++在C的基础上提供了更多的语法和特性 3.C++的设计目标是运行效率与开发效率的同一 4. C++更强调语言的实用性 5. 所有的变量都可以在需要使用时在定义对比: C语言中的原创 2017-06-25 08:51:12 · 293 阅读 · 0 评论 -
进化后的const分析
一、C语言中的const 1. const修饰的变量是只读的,本质上还是变量 2. const修饰的局部变量在栈上分配空间 3. const修饰的全局变量在只读存储区分配空间 4. const只在编译期有用,在运行期无用 const修饰的变量不是真正的常量,它只是告诉编译器该变量不能出现在赋值符号的左边。 C原创 2017-09-24 15:14:02 · 205 阅读 · 0 评论 -
函数重载与函数重写的区别
C++ 函数重写与函数重载的区别原创 2015-12-02 22:56:56 · 2977 阅读 · 0 评论