首页 > 其他分享 >day4

day4

时间:2023-08-23 23:45:15浏览次数:31  
标签:gcc 函数 ++ 子类 day4 编译 父类

 

建立类模板的对象时,需要先将类模板实例化,也就是类模板传递参数完成实例化,先指明这个对象,然后在实例化这个对象

 

结构体包含成员函数,能够实现继承和多态,结构体除了访问权限和类不一样外,几乎可以说是一模一样

 

const在*号左边时,表示指向的值不变,位于*右时,指针的指向不能改变

 

#ifndef、#define、#endif 是预处理命令,它们一起用来根据不同情况编译不同代码、产生不同目标文件的机制,称为条件编译。一般可以用于防止头文件重复包含。

main函数里面的s没有被初始化,编译时会报警,运行时会报错
假设s被初始化后,f()函数里面局部变量t的大小为7,而strcpy函数会复制example末尾的\0 所以example+'\0'一共8个字节空间,会溢出,程序会崩溃。 
  3.就算局部变量t的大小足够大,在fun函数运行结束后,局部变量t的内存空间会被释放掉,此时s成为野指针;返回main函数后,也不会输出example。 

gcc 和 GCC 是两个不同的东西   
  
   GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。   
  
   gcc是GCC中的GUN C Compiler(C 编译器)   
  
   g++是GCC中的GUN C++ Compiler(C++编译器)   
   
    一个有趣的事实就是,就本质而言,gcc和g++并不是编译器,也不是编译器的集合,它们只是一种驱动器,根据参数中要编译的文件的类型,调用对应的GUN编译器而已,比如,用gcc编译一个c文件的话,会有以下几个步骤:    
   
    Step1:Call a preprocessor, like cpp.    
   
    Step2:Call an actual compiler, like cc or cc1.    
   
    Step3:Call an assembler, like as.    
   
    Step4:Call a linker, like ld    
   
    由于编译器是可以更换的,所以gcc不仅仅可以编译C文件    
   
    所以,更准确的说法是:gcc调用了C compiler,而g++调用了C++ compiler    
   
    gcc和g++的主要区别    
   
    1. 对于 *.c和*.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的)    
   
    2. 对于 *.c和*.cpp文件,g++则统一当做cpp文件编译    
   
    3. 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL    
   
    4. gcc在编译C文件时,可使用的预定义宏是比较少的    
   
   5. gcc在编译cpp文件时/g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏

 

a是个函数声明 ,如果是定义对象  类名 变量名

 

一、赋值兼容 
1.子类对象可以赋值给父类对象
2.子类对象可以初始化父类对象
3.父类指针可以指向子类对象
4.父类引用可以引用子类对象

二.子类重写父类
当父类指针(引用)指向子类对象时,子类对象退化成父类对象,只能访问父类中定义的成员
如果B对象没有virtual修饰的话,B* pb = ⅆ dd就会退化为父类对象,pd就只能访问父类的成员B::Fun()。 
但是又virtual修饰的话,就会展现多态行为,会根据实际指针指向的对象判断函数的调用。pb 和pd都指向子类对象,所以调用D::Fun()。

 

  合法的浮点数有两种表示形式: 
十进制小数形式。他有数字和小数点组成,必须有小数点。例如(123.)(123.0)(.123)。 指数形式。如123e3。字母e(或E)之前必须有数字,e后面的指数必须为整数。规范化的指数形式里面,小数点前面有且只有一位非零的数字。如1.2345e8  

 

静态变量只会初始化一次

 

  CA* pa =&c;这句话是父类指针指向子类对象,调用pa->f1()时,因为父类中的f1()是虚函数,所以将发生动态绑定,调用子类CB中的f1()函数,先输出CB::f1() 
 在CB类的f1()函数中,调用非虚函数f2(),但因为其父类CA中的f2()函数并不是virtual函数,所以将调用CB类中的f2()函数,输出CB::f2()。如果将CA类中的f2()改成虚函数,那么将输出CC::f2();如果将CB类中的f2()改成虚函数,也将输出CC::f2(),这是满足动态绑定的。 

 

 

  A,正确,#define定义的宏是在预处理阶段进行替换的,const常量是在编译、运行阶段进行使用的。 
 
  注意是仅仅的字符串替换,并不会检查其合法性。 
 
  预处理阶段做了的任务: 
 1:将头文件中的内容(源文件之外的文件)插入到源文件中 
 2:进行了宏替换的过程(简单的字符串替换),定义和替换了由#define指令定义的符号 
 3:删除掉注释的过程,注释是不会带入到编译阶段 
 4:条件编译
 
  B,正确,所有的宏替换只是简单的字符串替换,注意是字符串替换,所以并不会检查其合法性,而const定义的常量依然是内置类型等,所以会对其进行类型安全检查。 
 
  C,正确,宏定义在程序中使用了几次在预处理阶段就会被展开几次,并不会增加内存占用,但是宏定义每展开一次,代码的长度就要发生变化(所以有利必有弊啊!),而const常量也会为其分配内存(如果是动态申请空间肯定就是堆中了)。 
 
  D,错误,const定义的常量只有一次拷贝没毛病,而define定义的变量在内存中并没有拷贝,因为所有的预处理指令都在预处理时进行了替换。 

 

标签:gcc,函数,++,子类,day4,编译,父类
From: https://www.cnblogs.com/skural/p/17653041.html

相关文章

  • javascript学习笔记day4
    今天重点学习了数组,老实说学过了c#和python的数组,但是今天重新接触js的数字还是有很多要重新学习的,下面是今天的笔记查询条件五个以上时,switch的效果比iflese高两倍以上.letarr=[]声明数组letarr=newArray(1,2,3,4)声明数组修改数组letarr=['a','b','c']for(letinde......
  • 8.20 Day4
    100+80+92+50=322rk1T1\(n\le1e7\)只能线性,有一个朴素的想法是设计\(dp_{i,0/1/2/3,0/1/2/3}\)表示涂到第i个盘子,目前颜色是什么的最大值,转移显然卡卡常即可T2人口普查,直接模拟,注意可能会被取空继续取T3观察到每次更新是两条轮廓线两条轮廓线都有单调性,直接双指针维护......
  • 【安全学习之路】Day43
    ......
  • Java入门学习——day4(基础语法)
    一、关键字Java语言自己用到的一些词,有特殊作用的,我们称之为关键字,如:public、class、int、double......注意:关键字是Java用了的,我们就不能用来作为:类名、变量,否则会报错!注意:关键字很多,不用刻意去记,因为会报错。二、标识符标识符就是名字,我们写程序时会起一些名字,如类名......
  • 算法练习-day46
    单调栈739.每日温度题意:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。实例:思路:本题作为单调栈的第一道题,我们需要了解什么是单调栈?单调栈中存储......
  • 【Java】从头开始的Java复健day4
    用的书:《Java从入门到精通》day1(3.1-3.3):【Java】从头开始的Java复健day1day2(3.4-3.8):【Java】从头开始的Java复健day2day3(4.1-4.3):【Java】从头开始的Java复健day3第四章流程控制4.5小结略略4.6练习题目写输出里了publicclassJava_test4_6{public......
  • 【安全学习之路】Day42
    ......
  • 算法练习-day43
    动态规划392.判断子序列题意:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。实例:思路:本题我们的思路和1143. 最长公共子序......
  • 算法练习-day42
    动态规划1143.最长公共子序列题意:给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何......
  • 【安全学习之路】Day41
    ......