c++知识点总结(1)

    xiaoxiao2021-03-25  118

    重载:

        只有在  同一类定义中的同名成员函数才存在重载关系 ,主要特点是  函数的参数类型和数目有所不同 ,但  不能出现函数参数的个数和类型均相同 ,仅仅依靠返回值类型不同来区分的函数,这和普通函数的重载是完全一致的。另外,重载和成员函数是否是虚函数无关 覆盖:     派生类中覆盖基类中的同名函数,要求两个函数的 参数个数、参数类型、返回类型都相同,且基类函数必须是虚函数。 隐藏:    派生类中的函数屏蔽了基类中的同名函数, 2个函数参数相同,但基类函数不是虚函数( 和覆盖的区别在于基类函数是否是虚函数)。2个函数参数不同,无论基类函数是否是虚函数,基类函数都会被屏蔽( 和重载的区别在于两个函数不在同一类中)。 int main(){ int i=-2147483648; return printf("%d,%d,%d,%d",~i,-i,1-i,-1-i); } 正数原码、反码、补码形式一致。  负数反码,为其原码的符号位不变,其他位取反;  负数补码,是其反码加1。 举例8bit有符号型整数: +34原码=反码=补码:00100010 -34原码=10100010,反码=11011101,补码=11011110 ================================== 不管是在32还是在64位编译器处理下,int都是4字节32位,所以整数范围是-2147483648~2147483647,数值以补码形式存储。 【注意】最小负数-2147483648=-2 31  并没有原码和反码,只有补码,由 -0的原码  1 0...0(31个0) 表示 。 因此: 1、~i:对每一位  取反运算。为 01...1(31个1),是正数,补码即原码,即2 31-1=2147483647; 2、  -i:  对该数求补运算,即【每位】取反运算,再加1。取反,  10...0(31个0)->  01...1(31个1),再加1得  10...0(31个0),   码表现为  最小负数- 2147483648,并没有原码和反码; 3、1-i:补码形式相加,再推回原码得十进制结果。-i(  10...0(31个0) )+( 0 ...1(31个0) )=  10...1(30个0),此为补码形式, 补码转  原码为补码减1,再非符号位取反,即原码 1...1(32个1)= -(2 31-1)= - 2147483647  4、  -1-i  :补码形式相加,再推回原码得十进制结果。即-i(  10...0(31个0) )+( 1 ...1(32个1) )=  01...1(31个1),是正数形式,原码即补码,为2 31-1= 2147483647 。 以下哪种语法在C++中是错误的?其中X为一C++类 const X * xX const * xconst X const * xX * const x 这里大X表示类,小写x代表实例。 其实考的是const用法:在X *x这个经典语句中,const插到*前面还是*后面的区别。 AB没有区别,const在*号前面,都表示*x不可修改。 C中*号前面两个const,g++编译器也提示duplicate 'const',所以C的语法是错的。 D中const在*号后面,表示x指针不可修改。运行 会提示x需要初始化。 const类型的指针声明时必须初始化
    转载请注明原文地址: https://ju.6miu.com/read-3979.html

    最新回复(0)