牛客刷题

知识点:对于内置类型而言,new仅仅是分配内存,除非后面显示加(),相当于调用它的构造函数,对于自定义类型而言,只要
一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()
int *p=new int[10];只申请了内存空间,里面的值是随机的
int *p=new int[10]();申请内存空间,并调用构造函数。
知识点:分解质因数如20->2*10  10->2*5
void decompose_prime(int n)
{
int k=2;
if(n>=2)
{
while(n%k) k++;
n/=k;
cout<<k<<endl;
decompose_prime(n);
}
return;
}

知识点:函数外部访问x等于??如果是函数外定义那么是0. 如果是函数内定义,那么是随机值,因为没有初始化
enum string{
x1,
x2,
x3=10,
}x;

知识点:封装性是基础,继承性是关键,多态性是补充,并且多态性存在于继承的环境中。
封装性:类是支持数据封装的工具,对象是数据封装的实现
继承性:一个类可以根据需要生成它的派生类,派生类还可以再生成派生类。派生类继承基类的成员,
另外,还可以定义自己的成员。继承是实现抽象和共享的一种机制。
多态性: 多态性是指对不同类的对象发出相同的消息将会有不同的实现
C++语言支持多态性表现在:
       1,C++语言允许函数重载和运算符重载。
       2,C++语言通过定义虚函数来支持动态联编,动态联编是多态性的一个重要的特征
虚函数是类的成员函数
函数重载允许非成员函数,而虚函数则不行
函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定

知识点:D和C生命周期都是全局的,先释放 D 在释放 C的原因是, 程序中首先调用的是 C的构造函数,然后调用的是 D
的构造函数,析构函数的调用与构造函数的调用顺序刚好相反。
设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为? A B D C
C c;
void main()
{
    A*pa=new A();
    B b;
    static D d;
    delete pa;
}

知识点:
error: stray ‘\200’ in program这个错误基本都是从网页复制代码,然后编译后产生
用cat -A 文件名,可以看到每行后面都有个^M,,,删掉后还不可以就是有中文字符,用notepad++ANSI格式可以看中文乱码。

知识点:
  三者说:有重载、重写和覆盖。出自《Java高手真经之Java核心编程技术》其中:
override覆盖:子类继承了父类的同名无参函数。当子类从父类继承了一个无参函数,而又定义了一个同样的无参函数,则子类
  定义的方法覆盖父类的方法,称为覆盖。
overload重载:子类继承了父类的同名有参函数。当子类继承了父类的一个同名方法,且方法参数不同,称为重载。
  通过方法的重载,子类可以重新实现父类的某些方法,使其具有自己的特征。
overwrite重写(当同一类的):当前类的同名方法。通过方法的重写,一个类可以有多个具有相同名字的方法,由传递给它们不
         同的个数和类型的参数来决定使用哪种方法。因此,重写的名称是当前类中的同名函数,不是父类中的函数名。

知识点:父类指针指向子类实例对象,调用普通重写方法时,会调用父类中的方法。而调用被子类重写虚函数时,
会调用子类中的方法。
写出下面程序的输出结果 :FuncA called   FuncBB called
class A
{
public:
 void FuncA()
 {
     printf( "FuncA called\n" );
 }
 virtual void FuncB()
 {
     printf( "FuncB called\n" );
 }
};
class B : public A
{
public:
 void FuncA()
 {
     A::FuncA();
     printf( "FuncAB called\n" );
 }
 virtual void FuncB()
 {
     printf( "FuncBB called\n" );
 }
};
void main( void )
{
 B  b;
 A  *pa;
 pa = &b;
 pa->FuncA();
 pa->FuncB();
 }







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值