?虚函数相关
#include <iostream>
using namespace std;
class Base{
public:
virtual void f(float x){cout << "Base f(float) " << x << endl;}
void g(float x){cout << "Base g(float) " << x << endl;}
void h(float x){cout << "Base h(float) " << x << endl;}
};
class Derived:public Base{
public:
virtual void f(float x){cout << "Derived f(float)" << x << endl;}
void g(int x){cout << "Derived g(int)" << x << endl;}
void h(float x){cout << "Derived h(float)" << x << endl;}
};
int main(void) {
Derived d;
Base *pBase = &d;
Derived *pDerived =&d;
pBase->f(3.14f);
pDerived->f(3.14f);
pBase->g(3.14f);
pDerived->g(3.14f);
pBase->h(3.14f);
pDerived->h(3.14f);
return 0;
}
Derived f(float)3.14
Derived f(float)3.14
Base g(float) 3.14
Derived g(int)3
Base h(float) 3.14
Derived h(float)3.14
继承与派生相关
#include <iostream>
using namespace std;
class Father{};
class Son:public Father{
private:
char* pData;
public:
Father(){pData = new char[32];}
~Father(){delete pData}
};
int main() {
Father* p =new Son();
delete p;
return 0;
}
分解质因数
#include<iostream>
using namespace std;
int main()
{
cout << "Input an integer:" << endl;
int num;
cin >> num;
int i;
for (i = 2;i <= num;i++)//核心代码
{
while (num != i)//先确定num不等于2
if (num%i == 0)//当num/i没有余数时,说明i是num的一个质数
{
cout << i << ",";//输出i
num = num / i;//取num/i整数部分
}
else break;//然后跳出,重新来,此时num变了,i也变成2了,因为重新开始
}
cout << num;
system("pause");
return 0;
}
浅复制与深复制的区别
浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。
重载、覆盖和重定义的区别
?c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)_gogogo_sky的博客-CSDN博客
const的用法
const的几种使用方法_firefly_2002的专栏-CSDN博客
const CComplex CComplex::Sample(const CComplex &c) const;
修饰返回值的const,如const A fun2( );const A* fun3( );?? 这样声明了返回值后,const按照"修饰原则"进行修饰,起到相应的保护作用。
类成员函数中const的使用?? 一般放在函数体后,形如:void fun() const;??
对于非内部数据类型的输入参数,因该将“值传递”的方式改为“const引用传递”,目的是为了提高效率。例如,将void Func(A a)改为voidFunc(const A &a)
类成员函数中const的使用 : 一般放在函数体后,形如:void fun() const;??任何不会修改数据成员的函数都因该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其他非const成员函数,编译器将报错,这大大提高了程序的健壮性。
|